Find All References on a variable template returns nothing

Aperta
#14,631 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
62/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Tranquilla
Stack tecnologico
cpp, typescript

Direzione di ricerca

Inizia con P1-var-template-zeroValue.zip e ispeziona src/extras.h:22 e gli utilizzi in main.cpp:150-151. Traccia la gestione di textDocument/references per il simbolo variable-template e confronta il risultato riportato con i tre riferimenti attesi. È completato quando Find All References restituisce la dichiarazione e entrambi gli utilizzi di istanziazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug Feature: Find All References Language Service
Environment

cpptools — Find All References on the variable template ex::zeroValue returns nothing

Field Value
Symbol (spec id) var-template-zeroValue
Declaration template <class T> constexpr T zeroValue = T(0); (variable template)
Query position src/extras.h:22:13 (cursor on zeroValue)
Affected LSP request textDocument/references
Repro archive P1-var-template-zeroValue.zip (this folder)

Summary

Find All References on the variable template ex::zeroValue returns no references in VS Code with the C/C++ extension (cpptools), missing both instantiation uses. The symbol appears unused even though it is instantiated twice.

Environment

  • Editor: Visual Studio Code 1.33.5
  • Extension: C/C++ (ms-vscode.cpptools), default IntelliSense engine
  • Language standard: C++20 (freestanding fixture; no STL/toolchain required)

Steps to reproduce

  1. Extract P1-var-template-zeroValue.zip and open the cpp-project folder in VS Code (C/C++ extension enabled).
  2. Optionally configure with CMake Tools (preset cdb); the fixture also parses under default C++20 IntelliSense.
  3. Open src/extras.h, place the cursor on zeroValue in constexpr T zeroValue = T(0); (line 22, col 13).
  4. Invoke Find All References (Shift+Alt+F12).

Expected vs actual

Source Result count
Expected 3
VS Code / cpptools 0 (no references)

Expected (3): the template declaration (extras.h:22) and its two instantiation uses in main()ex::zeroValue<int> (main.cpp:150) and ex::zeroValue<double> (main.cpp:151).

Actual (0): "Find All References" reports no results (the instantiation uses are not found).

Why it matters

A false "no references" on a live symbol is high risk: an automated agent (or a developer) can conclude the variable template is dead and delete it, breaking the two instantiations.

Bug Summary and Steps to Reproduce

P1-var-template-zeroValue.zip

Lingua principale
TypeScript
Stelle
6.2k
Fork
1.7k
Merge medio
14h 46m
PR unite (30g)
61

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/vscode-cpptools

Tutte le issue di microsoft/vscode-cpptools

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.