Header file with duplicate name but unique directory not identified by intellisense

Offen
#14,539 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
48/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Ruhig
Tech-Stack
cpp, vscode

Rechercherichtung

Reproduzieren Sie das gemeldete Layout mit duplizierten Dateien namens Resources/common.h in separaten Projekten und untersuchen Sie anschließend die IntelliSense-Diagnosen und Debug-Protokolle, während Sie ProjectA/SourceA.cpp mit ProjectB/SourceB.cpp vergleichen. Verfolgen Sie, wie die Erweiterung Header identifiziert und indiziert, wenn go-to-definition erfolgreich ist, Bezeichner jedoch weiterhin nicht aufgelöst werden. Als erledigt gilt die Aufgabe, wenn beide projektspezifischen Header indiziert sind und Verweise ohne rote Wellenlinien aufgelöst werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

by design Feature: Configuration Language Service
Bug Summary

I am using VSCode to work on source files from a large Visual Studio solution with many projects. Each project has its its own directory with various source files, and a subfolder for resource headers.

Solution/
├─ ProjectA/
│ ├─ Resources/
│ │ ├─ common.h
│ ├─ SourceA.cpp
├─ ProjectB/
│ ├─ Resources/
│ │ ├─ common.h
│ ├─ SourceB.cpp

ProjectA/Resources/common.h will only ever be referenced by source files within the ProjectA directory.
The issue with this is each of these resource headers has the same filename, so the intellisense database will only process the first one it finds. This is usually the first project folder alphabetically.
When running intellisense, on the above example, references to ProjectA/Resources/common.h by ProjectA/SourceA.cpp are resolved.
References to ProjectB/Resources/common.h by ProjectB/SourceB.cpp are not resolved and result in red squiggles with "identifier XYZ is undefined"

However when I click on the identifier in Source.B and select "go to definition" the extension correctly opens ProjectB/Resources/common.h and jumps to the selected identifier.

Configuration and Logs

This behavior is found in the default configurations. I have not been able to find a change to the configuration that alters this behavior.

Debug log diagnostics do not display anything unusual or useful.

Environment
  • OS and Version: Win 11 25H2
  • VS Code Version: 1.125.1 (issue identified on earlier versions)
  • C/C++ Extension Version: 1.33.0 (issue identified on earlier versions)
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus microsoft/vscode-cpptools

Alle Issues in microsoft/vscode-cpptools

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

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