microsoft / microsoft/vscode-cpptools

Header-only fallback incorrectly occurs when system headers are opened using compileCommands

Offen
#5,508 5 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Feature: Compile Commands investigate: repro Language Service
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere das Problem mit test.cpp, dem gezeigten compile_commands.json-Eintrag für sub.cpp und Go to Definition auf std::string. Verfolge, warum xstring als header-only fallback geöffnet wird, statt die vorhandene sub.cpp-Übersetzungseinheit zu verwenden; abgeschlossen bedeutet, dass der compile_commands-Pfad die vorhandene TU auflöst und dem Verhalten von CMake Tools configurationProvider entspricht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
devtools
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.