C++ Logo

sg15

Advanced search

Re: [SG15] module source suffixes

From: Mathias Stearn <redbeard0531+isocpp_at_[hidden]>
Date: Wed, 28 Aug 2019 21:35:29 +0200
On Wed, Aug 28, 2019, 06:59 Gabriel Dos Reis <gdr_at_[hidden]> wrote:

> No, unless ‘export’.
>
That seems problematic. Since interface units are allowed to import
implementation partitions (See
http://eel.is/c++draft/module.unit#4.example-1 TU#2), interface BMIs can
depend on finding the source files for those implementation partitions.
This means that it is insufficient to only scan interface units for module
names. If just knowing the interface files is insufficient, then why is it
important to be able to identify them, but not important to be able to
identify implementation partitions?



>
> Also, there are at least two entities here: (1) MSVC, the compile; and (2)
> VS IDE, the Visual Studio IDE.
>
> Those entities usually work in different ways, with different requirements.
>
> You can do stuff at design time that you can’t and shouldn’t do in a batch
> compiler.
>
>
>
> -- Gaby
>
>
>
>
>
> *From:* SG15 <sg15-bounces_at_[hidden]> *On Behalf Of *Mathias
> Stearn via SG15
> *Sent:* Tuesday, August 27, 2019 4:43 PM
> *To:* sg15_at_[hidden]
> *Cc:* Mathias Stearn <redbeard0531+isocpp_at_[hidden]>
> *Subject:* Re: [SG15] module source suffixes
>
>
>
>
>
> On Tue, Aug 27, 2019, 18:46 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.
>
>
>
> Does msvc consider a file with `module name:partition; // no export` to be
> a module interface source?
>
>
>
> 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.
>
> 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
> <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.isocpp.org%2Fmailman%2Flistinfo.cgi%2Fsg15&data=02%7C01%7Cgdr%40microsoft.com%7C3968fba4d90b4a94028308d72b485fc8%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637025462157942839&sdata=vi9O2yeNFGgLUbEwS6vnYmIz8hzauuXy5okzJj0LNls%3D&reserved=0>
>
>

Received on 2019-08-28 14:37:46