Repository navigation
Add CppModulesProject test scenario for C++20 modules groundwork - #14837
soroshsabz wants to merge 7 commits into
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The tests do not establish compilation-database use or preservation of delivered module arguments.
2 open findings
What changed in this PR
Adds C++20 modules test groundwork for extension-side behavior while semantic module-import support remains under development.
Changes:
- Adds file-classification, compilation-database, and custom-provider tests.
- Adds module fixtures and fake compiler assets.
- Runs the scenario in Windows CI.
| File | Description |
|---|---|
| Extension/test/scenarios/CppModulesProject/tests/modules.integration.test.ts | Adds module scenario tests. |
| Extension/test/scenarios/CppModulesProject/assets/math.ixx | Adds geometry module interface. |
| Extension/test/scenarios/CppModulesProject/assets/math.cppm | Adds math module interface. |
| Extension/test/scenarios/CppModulesProject/assets/main3.cpp | Adds MSVC-provider importer. |
| Extension/test/scenarios/CppModulesProject/assets/main2.cpp | Adds GCC-provider importer. |
| Extension/test/scenarios/CppModulesProject/assets/main.cpp | Adds compilation-database importer. |
| Extension/test/scenarios/CppModulesProject/assets/bin/gcc.exe | Adds Windows fake compiler. |
| Extension/test/scenarios/CppModulesProject/assets/bin/gcc | Adds non-Windows fake compiler. |
| Extension/test/scenarios/CppModulesProject/assets/.gitignore | Ignores generated configuration files. |
| .github/workflows/job-compile-and-test.yml | Adds Windows scenario execution. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Sean McManus (@sean-mcmanus) Is there anything else I can do? |
|
As you can see edgcpp/compiler#315 has been merged So please review this PR, I want to submit another PR for implement required features |
|
Sean McManus (@sean-mcmanus) Could you run CI for this PR? thanks |
|
soroshsabz My apologies -- I am and have been super busy recently. |
|
Sean McManus (@sean-mcmanus) Ok, I am waiting for you |

Motivation
IntelliSense support for C++20 modules importing (#6302) is still in development on the language server side. Meanwhile, module-based projects already exercise extension-side behavior that currently has no test coverage:
.cppm/.ixx) being recognized as C++ sources,compile_commands.jsonentries containing GCC module flags (-fmodules-ts,-fprebuilt-module-path,-fmodule-file) not preventing IntelliSense,This PR adds a
CppModulesProjecttest scenario that locks that behavior in. It makes no statement about the semantic understanding of module imports by the language server — when server-side support lands, these tests are the natural place to add the end-to-end module IntelliSense assertions.What the tests cover
.cppm/.ixxfiles open with thecpplanguage id (guards the file associations that module files depend on for any IntelliSense at all).compile_commands.jsonwith GCC module flags — a runtime-generatedcompile_commands.json(with the fakegccchecked into the scenario assets, following theSimpleCppProjectpattern) carries the GCC module flags for an importer and two module interface units; IntelliSense reachesIntelliSenseReadyfor the importer.-fmodules-ts,-fprebuilt-module-path=...,-fmodule-file=...) and MSVC-style (/ifcSearchDir,/reference,/headerUnit,/stdIfcDir) module arguments; the tests assert the configurations are accepted/delivered and the files become ready. The extension-side handling that carries the MSVC modules workaround around has regressed before (the/ifcSearchDir//referenceprocessing regression discussed in Add IntelliSense for C++20 modules importing #6302), so this is worth guarding.Notes
yarn test --scenario=CppModulesProject) mirroring the existingSimpleCppProjectstep. Happy to drop it or extend it to other platforms per maintainer preference.Related: #6302