microsoft / microsoft/vscode-cpptools
Header-only fallback incorrectly occurs when system headers are opened using compileCommands
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 6.2k
- Forks
- 1.7k
- Avg merge
- 14h 46m
- Merged PRs (30d)
- 61
Description
Use test.cpp
#include <string>
int main()
{
std::string s;
}
with some compile_commands.json like
[
{
"directory": "<dir>",
"command": "C:\\PROGRA~2\\MICROS~3\\2017\\ENTERP~1\\VC\\Tools\\MSVC\\1416~1.270\\bin\\Hostx86\\x86\\cl.exe -c sub.cpp",
"file": "sub.cpp"
}
]
Then use Go to Definition on std::string.
Bug: The TU for xstring gets opened as a header only fallback instead of using the existing TU for sub.cpp.
This bug doesn't repro when using the CMake Tools configurationProvider.
Bug2 in https://github.com/microsoft/vscode-cpptools/issues/5506 is related.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the issue with test.cpp, the shown compile_commands.json entry for sub.cpp, and Go to Definition on std::string. Trace why xstring is opened as a header-only fallback instead of using the existing sub.cpp translation unit; done means the compile_commands path resolves the existing TU, matching the CMake Tools configurationProvider behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100