microsoft / microsoft/vscode-cpptools
Incorrect errors when __attribute__ is used on enum values in gcc mode
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- TypeScript
- Sterne
- 6.2k
- Forks
- 1.7k
- Ø Merge
- 14 Std. 46 Min.
- Gemergte PRs (30 T.)
- 61
Beschreibung
Type: LanguageService
Describe the bug
- OS and Version: Fedora 31
- VS Code Version: 1.41
- C/C++ Extension Version: 0.26.3
- Other extensions you installed (and if the issue persists after disabling them): TBD (how can I disable every extension except for this one? I have 50 extensions installed.)
- A clear and concise description of what the bug is.
There is an identifier exported from GLib, G_PARAM_STATIC_STRINGS (a macro), that is marked as undefined (has red squiggles) even though I can Ctrl+click it to show the definition. Seeing the definition shows no errors. The file that the macro is defined also reports an unusual error though, where an ending } is expected. Not sure if this is throwing off the language server, but something is off.
To Reproduce
repository in question: https://git.sr.ht/~tristan957/harvest-almanac (also mirrored on my GitHub if more convenient)
example of usage: https://git.sr.ht/~tristan957/harvest-almanac/tree/d5ebeb13fb59b3c99e3c43c290b7b7e7aed51020/harvest-glib/harvest-project.c#L334
c_cpp_properties.json
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/harvest-glib",
"/usr/include/gtk-3.0",
"/usr/include/glib-2.0",
"/usr/lib64/glib-2.0/include",
"/usr/include/pango-1.0",
"/usr/include/cairo",
"/usr/include/gdk-pixbuf-2.0",
"/usr/include/atk-1.0",
"/usr/include/libhandy-0.0",
"/usr/include/json-glib-1.0",
"/usr/include/libsoup-2.4",
"/usr/include/libsecret-1",
"/usr/include/harfbuzz",
"/home/tristan957/.local/include",
"${workspaceFolder}/build/harvest-glib"
],
"defines": [
"__HARVEST_HEADER_INTERNAL__"
],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"compileCommands": "${workspaceFolder}/build/compile_commands.json"
}
],
"version": 4
}
- Open the repo in VSCode
- Go to
harvest-glib/harvest-project.cline 334, see error on line 335 (any .c file should show the same error fyi) - Notice squiggles
- Ctrl+click (now viewing gparam.h) (https://gitlab.gnome.org/GNOME/glib/blob/master/gobject/gparam.h#L175)
- Notice error on line 159 of file (https://gitlab.gnome.org/GNOME/glib/blob/master/gobject/gparam.h#L159)
- Follow the definition of
GLIB_DEPRECATED_ENUMERATOR_IN_2_26to gversionmacros.h and then to gmacros.h - See that
GLIB_DEPRECATED_ENUMERATOR_IN_2_26eventually gets defined as__attribute__((__deprecated__))
Expected behavior
Not misreport a defined identifier.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit harvest-glib/harvest-project.c ungefähr bei Zeile 334 unter Verwendung der mitgelieferten c_cpp_properties.json. Untersuchen Sie anschließend gparam.h ungefähr bei Zeile 159 und verfolgen Sie GLIB_DEPRECATED_ENUMERATOR_IN_2_26 durch gversionmacros.h und gmacros.h. Reproduzieren Sie die Diagnosen und überprüfen Sie, dass der definierte Bezeichner G_PARAM_STATIC_STRINGS und die zugehörige Position der schließenden geschweiften Klammer nicht mehr fälschlicherweise gemeldet werden.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- c, vscode
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 38/100