C++ Logo

sg15

Advanced search

Re: [SG15] module source suffixes

From: Gabriel Dos Reis <gdr_at_[hidden]>
Date: Wed, 28 Aug 2019 04:59:24 +0000
No, unless ‘export’.

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]cpp.org
Cc: Mathias Stearn <redbeard0531+isocpp_at_[hidden]m>
Subject: Re: [SG15] module source suffixes


On Tue, Aug 27, 2019, 18:46 Olga Arkhipova via SG15 <sg15_at_[hidden]<mailto: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]<mailto:mwoehlke.floss_at_[hidden]>>
Sent: Tuesday, August 27, 2019 7:55 AM
To: sg15_at_lists.isocpp.org<mailto:sg15_at_[hidden]>
Cc: Olga Arkhipova <olgaark_at_[hidden]<mailto: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]<mailto: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 00:01:28