Date: Tue, 27 Aug 2019 18:49:06 -0700
On Tue, Aug 27, 2019 at 9:46 AM Olga Arkhipova via SG15 <
sg15_at_[hidden]> wrote:
> IDE needs to build all module sources (if they are not already built) so
> their BMIs can be used in intellisense when user is editing some code which
> is using those modules. Before all BMIs for all modules used in the code
> are available, a code cannot be compiled (i.e. no semantic colorization,
> autocompletion, etc. in the editor).
>
> To be able to build modules in the correct order, all module interface
> sources needs to be parsed for module names and dependencies. Parsing all
> codebase for potential modules will (in most cases) take significantly more
> time than just parsing module interface files, so we'd really like to avoid
> this.
>
I don't think this will be an issue. The WD currently requires that all
modules with a global module fragment (GMF) have `module;` as the first
preprocessing tokens, and it's considered a bug that modules without a GMF
don't require the same. You don't need to fully parse a file to determine
if it's a module, you just need to look at up to the first 4 preprocessing
tokens.
- Michael Spencer
>
> The type of a c/c++ file is currently determined by looking at what
> compiler options are set for it in a project (when available) or file
> extension (when no project contains the file). So module interface files
> will be the ones which will be built with /module:interface (in MSVC case)
> according to the project settings (or again, when no project or no specific
> setting, with special extension).
>
> So if you want a .cpp file to be compiled as a module, you'll have to
> modifying some project settings for it, similar to if you want .c file to
> be compiled as cpp.
>
> Olga
>
>
> -----Original Message-----
> From: Matthew Woehlke <mwoehlke.floss_at_[hidden]>
> Sent: Tuesday, August 27, 2019 7:55 AM
> To: sg15_at_[hidden]
> Cc: Olga Arkhipova <olgaark_at_[hidden]>
> Subject: Re: [SG15] module source suffixes
>
> On 26/08/2019 23.49, Olga Arkhipova via SG15 wrote:
> > You still will be able to do it, but at least in MSVC case you'll have
> to explicitly tell the compiler (by setting /module:interface switch) that
> this cpp file is actually a module.
>
> Isn't that the build-system's responsibility?
>
> You previously stated that the *IDE* needs to specially handle module
> interface files. Why?
>
> --
> Matthew
> _______________________________________________
> SG15 mailing list
> SG15_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/sg15
>
sg15_at_[hidden]> wrote:
> IDE needs to build all module sources (if they are not already built) so
> their BMIs can be used in intellisense when user is editing some code which
> is using those modules. Before all BMIs for all modules used in the code
> are available, a code cannot be compiled (i.e. no semantic colorization,
> autocompletion, etc. in the editor).
>
> To be able to build modules in the correct order, all module interface
> sources needs to be parsed for module names and dependencies. Parsing all
> codebase for potential modules will (in most cases) take significantly more
> time than just parsing module interface files, so we'd really like to avoid
> this.
>
I don't think this will be an issue. The WD currently requires that all
modules with a global module fragment (GMF) have `module;` as the first
preprocessing tokens, and it's considered a bug that modules without a GMF
don't require the same. You don't need to fully parse a file to determine
if it's a module, you just need to look at up to the first 4 preprocessing
tokens.
- Michael Spencer
>
> The type of a c/c++ file is currently determined by looking at what
> compiler options are set for it in a project (when available) or file
> extension (when no project contains the file). So module interface files
> will be the ones which will be built with /module:interface (in MSVC case)
> according to the project settings (or again, when no project or no specific
> setting, with special extension).
>
> So if you want a .cpp file to be compiled as a module, you'll have to
> modifying some project settings for it, similar to if you want .c file to
> be compiled as cpp.
>
> Olga
>
>
> -----Original Message-----
> From: Matthew Woehlke <mwoehlke.floss_at_[hidden]>
> Sent: Tuesday, August 27, 2019 7:55 AM
> To: sg15_at_[hidden]
> Cc: Olga Arkhipova <olgaark_at_[hidden]>
> Subject: Re: [SG15] module source suffixes
>
> On 26/08/2019 23.49, Olga Arkhipova via SG15 wrote:
> > You still will be able to do it, but at least in MSVC case you'll have
> to explicitly tell the compiler (by setting /module:interface switch) that
> this cpp file is actually a module.
>
> Isn't that the build-system's responsibility?
>
> You previously stated that the *IDE* needs to specially handle module
> interface files. Why?
>
> --
> Matthew
> _______________________________________________
> SG15 mailing list
> SG15_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/sg15
>
Received on 2019-08-27 20:51:21