microsoft / microsoft/vscode-cpptools

typeof incorrectly removes qualifiers in some situations (with C clang/gcc modes)

Offen
#13,613 3 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Feature: Configuration Language Service verified Visual Studio
Vorherrschende Sprache
TypeScript
Sterne
6.2k
Forks
1.7k
Ø Merge
14 Std. 46 Min.
Gemergte PRs (30 T.)
61

Beschreibung

Environment
  • OS and Version: Windows 10
  • VS Code Version: 1.100.2
  • C/C++ Extension Version: 1.25.3
Bug Summary and Steps to Reproduce

Bug Summary:

Steps to reproduce:
Use typeof with a qualified or atomic lvalue obtained from dereferencing a pointer to a qualified or atomic type, for example:

typedef typeof(*(const int*)0)x;

When hovering over this definition, it reports x as being the type int.

Expected behavior:
The reported type of x should be const int.

Configuration and Logs
{
	"configurations": [
		{
			"name": "Win32",
			"includePath": [
				"${workspaceFolder}/**"
			],
			"defines": [
				"_DEBUG",
				"UNICODE",
				"_UNICODE"
			],
			"cStandard": "c23",
			"cppStandard": "c++23",
			"intelliSenseMode": "linux-gcc-x64",
			"compilerPath": "C:/cygwin64/bin/gcc.exe"
		}
	],
	"version": 4
}
Other Extensions

No response

Additional context

Image

This issue does not occur when using an lvalue derived from a name instead of dereferencing a pointer, e.g.:

Image

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 zunächst das Hover-Ergebnis mit dem bereitgestellten C23 typeof-Beispiel in der gemeldeten Windows-GCC-Konfiguration und verfolge anschließend die IntelliSense-Typinformationen für einen dereferenzierten Zeiger auf einen qualifizierten oder atomaren Typ. Erledigt ist die Aufgabe, wenn der gemeldete Typ den const- oder atomic-Qualifizierer beibehält, auch bei der bereitgestellten Reproduktion.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

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

Neue Issues direkt in Ihr Postfach

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