Skip to content

Commit 5c8939c

Browse files
committed
Add tests to ensure cpp23 with import std work.
1 parent 322a103 commit 5c8939c

File tree

7 files changed

+316
-10
lines changed

7 files changed

+316
-10
lines changed

.github/instructions/modules.instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
applyTo: "strings/**,cppwinrt/**,nuget/**,test/test_module_winrt/**,test/test_cpp20_module/**,test/test_component_module/**"
2+
applyTo: "strings/**,cppwinrt/**,nuget/**,test/test_cpp20_module_winrt/**,test/test_cpp23_module_winrt/**,test/test_cpp20_module/**,test/test_component_module/**"
33
---
44

55
# C++20 Module Code Generation

cppwinrt.sln

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cpp20_module", "test\t
129129
{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C} = {F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C}
130130
EndProjectSection
131131
EndProject
132-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_module_winrt", "test\test_module_winrt\test_module_winrt.vcxproj", "{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C}"
132+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cpp20_module_winrt", "test\test_cpp20_module_winrt\test_cpp20_module_winrt.vcxproj", "{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C}"
133133
ProjectSection(ProjectDependencies) = postProject
134134
{D613FB39-5035-4043-91E2-BAB323908AF4} = {D613FB39-5035-4043-91E2-BAB323908AF4}
135135
EndProjectSection
@@ -139,6 +139,16 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_component_module", "te
139139
{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C} = {F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C}
140140
EndProjectSection
141141
EndProject
142+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cpp23_module_winrt", "test\test_cpp23_module_winrt\test_cpp23_module_winrt.vcxproj", "{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}"
143+
ProjectSection(ProjectDependencies) = postProject
144+
{D613FB39-5035-4043-91E2-BAB323908AF4} = {D613FB39-5035-4043-91E2-BAB323908AF4}
145+
EndProjectSection
146+
EndProject
147+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test_cpp23_module", "test\\test_cpp23_module\\test_cpp23_module.vcxproj", "{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}"
148+
ProjectSection(ProjectDependencies) = postProject
149+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12} = {A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}
150+
EndProjectSection
151+
EndProject
142152
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D15C8430-A7CD-4616-BD84-243B26A9F1C2}"
143153
ProjectSection(SolutionItems) = preProject
144154
build_nuget.cmd = build_nuget.cmd
@@ -462,6 +472,18 @@ Global
462472
{E1D3004A-7F92-4C2B-B25A-3D3A29E316A1}.Release|x64.Build.0 = Release|x64
463473
{E1D3004A-7F92-4C2B-B25A-3D3A29E316A1}.Release|x86.ActiveCfg = Release|Win32
464474
{E1D3004A-7F92-4C2B-B25A-3D3A29E316A1}.Release|x86.Build.0 = Release|Win32
475+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Debug|ARM64.ActiveCfg = Debug|ARM64
476+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Debug|x64.ActiveCfg = Debug|x64
477+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Debug|x86.ActiveCfg = Debug|Win32
478+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Release|ARM64.ActiveCfg = Release|ARM64
479+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Release|x64.ActiveCfg = Release|x64
480+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12}.Release|x86.ActiveCfg = Release|Win32
481+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Debug|ARM64.ActiveCfg = Debug|ARM64
482+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Debug|x64.ActiveCfg = Debug|x64
483+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Debug|x86.ActiveCfg = Debug|Win32
484+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Release|ARM64.ActiveCfg = Release|ARM64
485+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Release|x64.ActiveCfg = Release|x64
486+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}.Release|x86.ActiveCfg = Release|Win32
465487
EndGlobalSection
466488
GlobalSection(SolutionProperties) = preSolution
467489
HideSolutionNode = FALSE
@@ -489,6 +511,8 @@ Global
489511
{B85004D5-2C57-4A53-BA7F-FE0B614EA1DE} = {3C7EA5F8-6E8C-4376-B499-2CAF596384B0}
490512
{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C} = {3C7EA5F8-6E8C-4376-B499-2CAF596384B0}
491513
{E1D3004A-7F92-4C2B-B25A-3D3A29E316A1} = {3C7EA5F8-6E8C-4376-B499-2CAF596384B0}
514+
{A7C3B845-6F1D-4E3A-9B82-7D4F5E6C8A12} = {3C7EA5F8-6E8C-4376-B499-2CAF596384B0}
515+
{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F} = {3C7EA5F8-6E8C-4376-B499-2CAF596384B0}
492516
EndGlobalSection
493517
GlobalSection(ExtensibilityGlobals) = postSolution
494518
SolutionGuid = {2783B8FD-EA3B-4D6B-9F81-662D289E02AA}

test/test_component_module/test_component_module.vcxproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,15 @@
9797
</PropertyGroup>
9898
<ItemDefinitionGroup>
9999
<ClCompile>
100-
<AdditionalIncludeDirectories>.;$(ProjectDir)Generated Files;$(SolutionDir)test\test_module_winrt\Generated Files;Generated Files</AdditionalIncludeDirectories>
100+
<AdditionalIncludeDirectories>.;$(ProjectDir)Generated Files;$(SolutionDir)test\test_cpp20_module_winrt\Generated Files;Generated Files</AdditionalIncludeDirectories>
101101
<PreprocessorDefinitions>NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
102102
<PrecompiledHeader>Use</PrecompiledHeader>
103103
<BuildStlModules>true</BuildStlModules>
104-
<AdditionalModuleDependencies>$(IntDir)..\test_module_winrt\winrt.ixx.ifc;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
104+
<AdditionalModuleDependencies>$(IntDir)..\test_cpp20_module_winrt\winrt.ixx.ifc;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
105105
</ClCompile>
106106
<Link>
107107
<ModuleDefinitionFile>exports.def</ModuleDefinitionFile>
108-
<AdditionalDependencies>$(IntDir)..\test_module_winrt\winrt.ixx.obj;%(AdditionalDependencies)</AdditionalDependencies>
108+
<AdditionalDependencies>$(IntDir)..\test_cpp20_module_winrt\winrt.ixx.obj;%(AdditionalDependencies)</AdditionalDependencies>
109109
</Link>
110110
<Midl>
111111
<EnableWindowsRuntime>true</EnableWindowsRuntime>

test/test_cpp20_module/test_cpp20_module.vcxproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,15 +98,15 @@
9898
-->
9999
<ItemDefinitionGroup>
100100
<ClCompile>
101-
<AdditionalIncludeDirectories>$(SolutionDir)test\test_module_winrt\Generated Files;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
101+
<AdditionalIncludeDirectories>$(SolutionDir)test\test_cpp20_module_winrt\Generated Files;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
102102
<PreprocessorDefinitions>NOMINMAX;WINRT_LEAN_AND_MEAN;WINRT_IMPORT_STD;WINRT_TEST_MODULES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
103103
<PrecompiledHeader>Use</PrecompiledHeader>
104104
<BuildStlModules>true</BuildStlModules>
105-
<AdditionalModuleDependencies>$(IntDir)..\test_module_winrt\winrt.ixx.ifc;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
105+
<AdditionalModuleDependencies>$(IntDir)..\test_cpp20_module_winrt\winrt.ixx.ifc;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
106106
</ClCompile>
107107
<Link>
108108
<SubSystem>Console</SubSystem>
109-
<AdditionalDependencies>$(IntDir)..\test_module_winrt\winrt.ixx.obj;%(AdditionalDependencies)</AdditionalDependencies>
109+
<AdditionalDependencies>$(IntDir)..\test_cpp20_module_winrt\winrt.ixx.obj;%(AdditionalDependencies)</AdditionalDependencies>
110110
</Link>
111111
</ItemDefinitionGroup>
112112
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">

test/test_module_winrt/test_module_winrt.vcxproj renamed to test/test_cpp20_module_winrt/test_cpp20_module_winrt.vcxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
<PropertyGroup Label="Globals">
3030
<VCProjectVersion>16.0</VCProjectVersion>
3131
<ProjectGuid>{F39B6BA2-3E78-4A01-BF72-D52C39AC3D8C}</ProjectGuid>
32-
<RootNamespace>test_module_winrt</RootNamespace>
33-
<ProjectName>test_module_winrt</ProjectName>
32+
<RootNamespace>test_cpp20_module_winrt</RootNamespace>
33+
<ProjectName>test_cpp20_module_winrt</ProjectName>
3434
<CppWinRTLanguageStandard>20</CppWinRTLanguageStandard>
3535
</PropertyGroup>
3636
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3+
<ItemGroup Label="ProjectConfigurations">
4+
<ProjectConfiguration Include="Debug|ARM64">
5+
<Configuration>Debug</Configuration>
6+
<Platform>ARM64</Platform>
7+
</ProjectConfiguration>
8+
<ProjectConfiguration Include="Debug|Win32">
9+
<Configuration>Debug</Configuration>
10+
<Platform>Win32</Platform>
11+
</ProjectConfiguration>
12+
<ProjectConfiguration Include="Release|ARM64">
13+
<Configuration>Release</Configuration>
14+
<Platform>ARM64</Platform>
15+
</ProjectConfiguration>
16+
<ProjectConfiguration Include="Release|Win32">
17+
<Configuration>Release</Configuration>
18+
<Platform>Win32</Platform>
19+
</ProjectConfiguration>
20+
<ProjectConfiguration Include="Debug|x64">
21+
<Configuration>Debug</Configuration>
22+
<Platform>x64</Platform>
23+
</ProjectConfiguration>
24+
<ProjectConfiguration Include="Release|x64">
25+
<Configuration>Release</Configuration>
26+
<Platform>x64</Platform>
27+
</ProjectConfiguration>
28+
</ItemGroup>
29+
<PropertyGroup Label="Globals">
30+
<VCProjectVersion>16.0</VCProjectVersion>
31+
<ProjectGuid>{C8D4E5F6-7A8B-4C9D-BE0F-1A2B3C4D5E6F}</ProjectGuid>
32+
<RootNamespace>test_cpp23_module</RootNamespace>
33+
<ProjectName>test_cpp23_module</ProjectName>
34+
</PropertyGroup>
35+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
36+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
37+
<ConfigurationType>Application</ConfigurationType>
38+
<UseDebugLibraries>true</UseDebugLibraries>
39+
<PlatformToolset>v143</PlatformToolset>
40+
</PropertyGroup>
41+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
42+
<ConfigurationType>Application</ConfigurationType>
43+
<UseDebugLibraries>true</UseDebugLibraries>
44+
<PlatformToolset>v143</PlatformToolset>
45+
</PropertyGroup>
46+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
47+
<ConfigurationType>Application</ConfigurationType>
48+
<UseDebugLibraries>false</UseDebugLibraries>
49+
<WholeProgramOptimization>true</WholeProgramOptimization>
50+
<PlatformToolset>v143</PlatformToolset>
51+
</PropertyGroup>
52+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
53+
<ConfigurationType>Application</ConfigurationType>
54+
<UseDebugLibraries>false</UseDebugLibraries>
55+
<WholeProgramOptimization>true</WholeProgramOptimization>
56+
<PlatformToolset>v143</PlatformToolset>
57+
</PropertyGroup>
58+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
59+
<ConfigurationType>Application</ConfigurationType>
60+
<UseDebugLibraries>true</UseDebugLibraries>
61+
<PlatformToolset>v143</PlatformToolset>
62+
</PropertyGroup>
63+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
64+
<ConfigurationType>Application</ConfigurationType>
65+
<UseDebugLibraries>false</UseDebugLibraries>
66+
<WholeProgramOptimization>true</WholeProgramOptimization>
67+
<PlatformToolset>v143</PlatformToolset>
68+
</PropertyGroup>
69+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
70+
<ImportGroup Label="ExtensionSettings">
71+
</ImportGroup>
72+
<ImportGroup Label="Shared">
73+
</ImportGroup>
74+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
75+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
76+
</ImportGroup>
77+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="PropertySheets">
78+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
79+
</ImportGroup>
80+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
81+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
82+
</ImportGroup>
83+
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="PropertySheets">
84+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
85+
</ImportGroup>
86+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
87+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
88+
</ImportGroup>
89+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
90+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
91+
</ImportGroup>
92+
<PropertyGroup Label="UserMacros" />
93+
<!--
94+
C++23 module consumer test.
95+
Uses /std:c++latest with WINRT_IMPORT_STD to exercise import std alongside import winrt.
96+
Consumes the winrt module from test_cpp23_module_winrt.
97+
Shares test source files with test_cpp20_module via relative paths.
98+
-->
99+
<ItemDefinitionGroup>
100+
<ClCompile>
101+
<AdditionalIncludeDirectories>$(SolutionDir)test\test_cpp23_module_winrt\Generated Files;..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
102+
<PreprocessorDefinitions>NOMINMAX;WINRT_LEAN_AND_MEAN;WINRT_IMPORT_STD;WINRT_TEST_MODULES;%(PreprocessorDefinitions)</PreprocessorDefinitions>
103+
<PrecompiledHeader>Use</PrecompiledHeader>
104+
<BuildStlModules>true</BuildStlModules>
105+
<LanguageStandard>stdcpplatest</LanguageStandard>
106+
<AdditionalModuleDependencies>$(IntDir)..\test_cpp23_module_winrt\winrt.ixx.ifc;%(AdditionalModuleDependencies)</AdditionalModuleDependencies>
107+
</ClCompile>
108+
<Link>
109+
<SubSystem>Console</SubSystem>
110+
<AdditionalDependencies>$(IntDir)..\test_cpp23_module_winrt\winrt.ixx.obj;%(AdditionalDependencies)</AdditionalDependencies>
111+
</Link>
112+
</ItemDefinitionGroup>
113+
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
114+
<ClCompile>
115+
<Optimization>Disabled</Optimization>
116+
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
117+
</ClCompile>
118+
</ItemDefinitionGroup>
119+
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
120+
<ClCompile>
121+
<Optimization>MaxSpeed</Optimization>
122+
<FunctionLevelLinking>true</FunctionLevelLinking>
123+
<IntrinsicFunctions>true</IntrinsicFunctions>
124+
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
125+
</ClCompile>
126+
<Link>
127+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
128+
<OptimizeReferences>true</OptimizeReferences>
129+
</Link>
130+
</ItemDefinitionGroup>
131+
<ItemGroup>
132+
<!-- Share test sources from test_cpp20_module -->
133+
<ClCompile Include="..\test\coro_threadpool.cpp">
134+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
135+
</ClCompile>
136+
<ClCompile Include="..\test_cpp20_module\async.cpp" />
137+
<ClCompile Include="..\test_cpp20_module\interop.cpp" />
138+
<ClCompile Include="..\test_cpp20_module\main.cpp">
139+
<PrecompiledHeader>NotUsing</PrecompiledHeader>
140+
</ClCompile>
141+
<ClCompile Include="..\test_cpp20_module\pch.cpp">
142+
<PrecompiledHeader>Create</PrecompiledHeader>
143+
</ClCompile>
144+
</ItemGroup>
145+
<ItemGroup>
146+
<ClInclude Include="..\test_cpp20_module\pch.h" />
147+
</ItemGroup>
148+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
149+
<ImportGroup Label="ExtensionTargets">
150+
</ImportGroup>
151+
</Project>

0 commit comments

Comments
 (0)