microsoft / microsoft/vscode-cpptools

Incorrect errors when __attribute__ is used on enum values in gcc mode

Offen
#4,885 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug Language Service more votes needed Visual Studio
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
}
  1. Open the repo in VSCode
  2. Go to harvest-glib/harvest-project.c line 334, see error on line 335 (any .c file should show the same error fyi)
  3. Notice squiggles
  4. Ctrl+click (now viewing gparam.h) (https://gitlab.gnome.org/GNOME/glib/blob/master/gobject/gparam.h#L175)
  5. Notice error on line 159 of file (https://gitlab.gnome.org/GNOME/glib/blob/master/gobject/gparam.h#L159)
  6. Follow the definition of GLIB_DEPRECATED_ENUMERATOR_IN_2_26 to gversionmacros.h and then to gmacros.h
  7. See that GLIB_DEPRECATED_ENUMERATOR_IN_2_26 eventually gets defined as __attribute__((__deprecated__))

Expected behavior
Not misreport a defined identifier.

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

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

Neue Issues direkt in Ihr Postfach

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