microsoft / vscode-cpptools

Official repository for the Microsoft C/C++ extension for VS Code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`__declspec` attribute is not recognised with `-fdeclspec`

kodenamekrak opened this issue · comments

Environment

  • OS and Version: Ubuntu 23.10
  • VS Code Version: 1.89.0 b58957e67ee1e712cebf466b995adf4c5307b2bd
  • C/C++ Extension Version: v1.19.9
  • If using SSH remote, specify OS of remote machine:

Bug Summary and Steps to Reproduce

Bug Summary:

When using clang the __declspec attribute is not recognised in vscode when -fdeclspec is present in the compiler arguments even though the code compiles succesfully.

Steps to reproduce:

The following code compiles perfectly fine with clang++ main.cpp -fdeclspec

struct Foo {
    int get_number() { return 5; }
    __declspec(property(get=get_number)) int number;
};

int main(int argc, char** argv) {
    return 0;
}

vscode is unable to recognise __declspec when -fdeclspec and shows the following errors:

explicit type is missing ('int' assumed) [Ln 3, Col 5]
identifier "property" is undefined [Ln 3, Col 16]
expected a ')' [Ln 3, Col 28]
expected a ';' [Ln 3, Col 42]

Expected behavior:

__declspec is seen as valid code like when -fms-extensions is present

Configuration and Logs

{
    "configurations": [
        {
            "name": "linux",
            "compilerPath": "/usr/bin/clang",
            "intelliSenseMode": "linux-clang-x64",
            "configurationProvider": "ms-vscode.cpptools",
            "compilerArgs": [
                "-fdeclspec"
            ]
        }
    ],
    "version": 4
}




loggingLevel: Debug
loggingLevel has changed to: Debug
LSP: (invoked) cpptools/didChangeCppProperties (id: 16)
LSP: Sending response (id: 16)
LSP: (received) cpptools/fileCreated: file:///home/kodenamekrak/Documents/C%2B%2B/test/.vscode/settings.json
LSP: (invoked) cpptools/fileCreated: file:///home/kodenamekrak/Documents/C%2B%2B/test/.vscode/settings.json
LSP: (received) cpptools/fileCreated: file:///home/kodenamekrak/Documents/C%2B%2B/test/.vscode/settings.json
LSP: (invoked) cpptools/fileCreated: file:///home/kodenamekrak/Documents/C%2B%2B/test/.vscode/settings.json
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
LSP: (received) cpptools/didChangeVisibleTextEditors
LSP: (invoked) cpptools/didChangeVisibleTextEditors
Intellisense update pending for: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp
LSP: (received) cpptools/didChangeActiveEditor: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp
LSP: (invoked) cpptools/didChangeActiveEditor: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp
LSP: (received) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 17)
LSP: (invoked) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 17)
LSP: (received) cpptools/didChangeTextEditorSelection
LSP: Sending response (id: 17)
LSP: (invoked) cpptools/didChangeTextEditorSelection
IntelliSense update scheduled and TU acquisition started for: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp
Update IntelliSense time (sec): 0.002
LSP: (received) cpptools/getFoldingRanges: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 18)
LSP: (invoked) cpptools/getFoldingRanges: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 18)
LSP: Sending response (id: 18)
LSP: (received) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 19)
LSP: (invoked) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 19)
LSP: Sending response (id: 19)
LSP: (received) cpptools/getDocumentSymbols: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 20)
LSP: (invoked) cpptools/getDocumentSymbols: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 20)
LSP: Sending response (id: 20)
LSP: (received) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 21)
LSP: (invoked) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 21)
LSP: Sending response (id: 21)
LSP: (received) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 22)
LSP: (invoked) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 22)
LSP: Sending response (id: 22)
LSP: (received) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 23)
LSP: (invoked) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 23)
LSP: Sending response (id: 23)
LSP: (received) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 24)
LSP: (invoked) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 24)
LSP: Sending response (id: 24)
LSP: (received) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 25)
LSP: (invoked) textDocument/hover: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 25)
LSP: Sending response (id: 25)
LSP: (received) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 26)
LSP: (invoked) cpptools/getCodeActions: file:///home/kodenamekrak/Documents/C%2B%2B/test/main.cpp (id: 26)
LSP: Sending response (id: 26)






-------- Diagnostics - 5/5/2024, 10:19:22 PM
Version: 1.19.9
Current Configuration:
{
    "name": "linux",
    "compilerPath": "/usr/bin/clang",
    "intelliSenseMode": "linux-clang-x64",
    "configurationProvider": "ms-vscode.cpptools",
    "compilerArgs": [
        "-fdeclspec"
    ],
    "compilerPathIsExplicit": true,
    "cStandardIsExplicit": false,
    "cppStandardIsExplicit": false,
    "intelliSenseModeIsExplicit": true,
    "compilerPathInCppPropertiesJson": "/usr/bin/clang",
    "configurationProviderInCppPropertiesJson": "ms-vscode.cpptools",
    "mergeConfigurations": false,
    "browse": {
        "path": [
            "${workspaceFolder}"
        ],
        "limitSymbolsToIncludedHeaders": true
    }
}
cpptools version (native): 1.19.9.0
Translation Unit Mappings:
[ /home/kodenamekrak/Documents/C++/test/main.cpp - source TU]:
Translation Unit Configurations:
[ /home/kodenamekrak/Documents/C++/test/main.cpp ]:
    Process ID: 163784
    Memory Usage: 11 MB
    Compiler Path: /usr/bin/clang
    Includes:
        /usr/include/c++/13
        /usr/include/x86_64-linux-gnu/c++/13
        /usr/include/c++/13/backward
        /usr/lib/llvm-16/lib/clang/16/include
        /usr/local/include
        /usr/include/x86_64-linux-gnu
        /usr/include
    Standard Version: c++17
    IntelliSense Mode: linux-clang-x64
    Other Flags:
        --clang
        --clang_version=160006
Total Memory Usage: 11 MB

------- Workspace parsing diagnostics -------
Number of files discovered (not excluded): 11127

Other Extensions

This issue still occurs even when c/c++ is the only enabled extension

Additional context

No response

@kodenamekrak Our parser only currently recognizes -fms_extensions -- would it be acceptable for us to enable all ms extensions when -fdeclspec is encountered or does your scenario only compile with that one specific change and not the other ms extensions?

Enabling ms extensions would be a fine solution since its better that nothing, as for other ms extensions i cannot say as i have mever used any others