clangd / clangd

clangd language server
https://clangd.llvm.org
Apache License 2.0
1.4k stars 60 forks source link

Clangd ignores `.config` flags for system includes. #1615

Open HTD opened 1 year ago

HTD commented 1 year ago

I have a configuration for compiling my STM32CubeIDE project with clang:

CompileFlags:
    Add:
        - "--sysroot=d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10"
        - "--system-header-prefix=std"
        - "-target"
        - "gcc-arm-none-eabi-10.3-2021.10"
        - "-D__weak=__attribute__((weak))"
        - "-D__packed=__attribute__((__packed__))"
        - "-mcpu=cortex-m7"
        - "-mfpu=fpv5-d16"
        - "-mfloat-abi=hard"
        - "-mthumb"
        - "-D__FPU_PRESENT=1U"
        - "-DDEBUG"
        - "-DCORE_CM7"
        - "-DUSE_HAL_DRIVER"
        - "-DSTM32H745xx"
        - "-U_WIN32"
        - "-nostdinc"
        - "-nostdinc++"
        - "-nostdlib"
        - "-nostdlibinc"
        - "-nostdlib++"
        - "-nolibc"
        - "-iwithsysroot/arm-none-eabi/include"
        - "-iwithsysroot/lib/gcc/arm-none-eabi/10.3.1/include"
        - "-iwithsysroot/lib/gcc/arm-none-eabi/10.3.1/include-fixed"
---
If:
    PathMatch: [.*\.c, .*\.h]
CompileFlags:
    Add:
        - "-std=gnu11"
---
If:
    PathExclude: [.*\.c, .*\.h]
CompileFlags:
    Add:
        - "-std=gnu++17"
        - "-fno-exceptions"
        - "-fno-rtti"
        - "-fno-use-cxa-atexit"
        - "--include=arm-none-eabi/include/c++/10.3.1/stdlib.h"
        - "-iwithsysroot/arm-none-eabi/include/c++/10.3.1"
        - "-iwithsysroot/arm-none-eabi/include/c++/10.3.1/arm-none-eabi"
        - "-iwithsysroot/arm-none-eabi/include/c++/10.3.1/arm-none-eabi/thumb/v7e-m+dp/hard"

It works perfecly for any file in the project.

It doesn't work for system includes as <string> or <utility>. For those files I get errors like this:

'bits/c++config.h' file not found.

If I place #include <bits/c++config.h> inside my project, just anywhere, even in a file with no extension - it's OK.

It seems like clangd sees my include paths, but doesn't apply it to system includes, or doesn't apply it to system includes without extension.

Logs

I[22:38:21.755] clangd version 15.0.6 (https://github.com/llvm/llvm-project 088f33605d8a61ff519c580a71b1dd57d16a03f8)
I[22:38:21.757] Features: windows+grpc
I[22:38:21.757] PID: 14548
I[22:38:21.757] Working directory: d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO
I[22:38:21.757] argv[0]: c:\Users\Adam\AppData\Roaming\Code\User\globalStorage\llvm-vs-code-extensions.vscode-clangd\install\15.0.6\clangd_15.0.6\bin\clangd.exe
I[22:38:21.757] argv[1]: --query-driver=arm-none-eabi-*
I[22:38:21.757] argv[2]: --enable-config
I[22:38:21.757] argv[3]: --compile-commands-dir=.vscode
I[22:38:21.757] argv[4]: --limit-results=0
I[22:38:21.757] argv[5]: --log=verbose
V[22:38:21.769] User config file is C:\Users\Adam\AppData\Local\clangd\config.yaml
I[22:38:21.769] Starting LSP over stdin/stdout
V[22:38:21.770] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"1.1.0"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"notebookDocument":{"synchronization":{"dynamicRegistration":true,"executionSummarySupport":true}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":false},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":false},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":true},"documentChanges":true,"failureHandling":"textOnlyTransactional","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"Visual Studio Code","version":"1.77.3"},"initializationOptions":{"clangdFileStatus":true,"fallbackFlags":[]},"locale":"en-us","processId":6056,"rootPath":"d:\\Source\\CodeDog\\SWD\\Software\\SWD-STM32H745I-DISCO","rootUri":"file:///d%3A/Source/CodeDog/SWD/Software/SWD-STM32H745I-DISCO","trace":"off","workspaceFolders":[{"name":"SWD-STM32H745I-DISCO","uri":"file:///d%3A/Source/CodeDog/SWD/Software/SWD-STM32H745I-DISCO"}]}}

I[22:38:21.770] <-- initialize(0)
I[22:38:21.777] --> reply:initialize(0) 7 ms
V[22:38:21.778] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 15.0.6 (https://github.com/llvm/llvm-project 088f33605d8a61ff519c580a71b1dd57d16a03f8) windows+grpc x86_64-pc-windows-msvc"}}}

V[22:38:21.780] <<< {"jsonrpc":"2.0","method":"initialized","params":{}}

I[22:38:21.780] <-- initialized
V[22:38:21.787] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"// Components for manipulating sequences of characters -*- C++ -*-\n\n// Copyright (C) 1997-2020 Free Software Foundation, Inc.\n//\n// This file is part of the GNU ISO C++ Library.  This library is free\n// software; you can redistribute it and/or modify it under the\n// terms of the GNU General Public License as published by the\n// Free Software Foundation; either version 3, or (at your option)\n// any later version.\n\n// This library is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n\n// Under Section 7 of GPL version 3, you are granted additional\n// permissions described in the GCC Runtime Library Exception, version\n// 3.1, as published by the Free Software Foundation.\n\n// You should have received a copy of the GNU General Public License and\n// a copy of the GCC Runtime Library Exception along with this program;\n// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see\n// <http://www.gnu.org/licenses/>.\n\n/** @file include/string\n *  This is a Standard C++ Library header.\n */\n\n//\n// ISO C++ 14882: 21  Strings library\n//\n\n#ifndef _GLIBCXX_STRING\n#define _GLIBCXX_STRING\t1\n\n#pragma GCC system_header\n\n#include <bits/c++config.h>\n#include <bits/stringfwd.h>\n#include <bits/char_traits.h>  // NB: In turn includes stl_algobase.h\n#include <bits/allocator.h>\n#include <bits/cpp_type_traits.h>\n#include <bits/localefwd.h>    // For operators >>, <<, and getline.\n#include <bits/ostream_insert.h>\n#include <bits/stl_iterator_base_types.h>\n#include <bits/stl_iterator_base_funcs.h>\n#include <bits/stl_iterator.h>\n#include <bits/stl_function.h> // For less\n#include <ext/numeric_traits.h>\n#include <bits/stl_algobase.h>\n#if __cplusplus > 201703L\n#  include <bits/stl_algo.h> // For remove and remove_if\n#endif // C++20\n#include <bits/range_access.h>\n#include <bits/basic_string.h>\n#include <bits/basic_string.tcc>\n\n#if __cplusplus >= 201703L && _GLIBCXX_USE_CXX11_ABI\nnamespace std _GLIBCXX_VISIBILITY(default)\n{\n_GLIBCXX_BEGIN_NAMESPACE_VERSION\n  namespace pmr {\n    template<typename _Tp> class polymorphic_allocator;\n    template<typename _CharT, typename _Traits = char_traits<_CharT>>\n      using basic_string = std::basic_string<_CharT, _Traits,\n\t\t\t\t\t     polymorphic_allocator<_CharT>>;\n    using string    = basic_string<char>;\n#ifdef _GLIBCXX_USE_CHAR8_T\n    using u8string  = basic_string<char8_t>;\n#endif\n    using u16string = basic_string<char16_t>;\n    using u32string = basic_string<char32_t>;\n#ifdef _GLIBCXX_USE_WCHAR_T\n    using wstring   = basic_string<wchar_t>;\n#endif\n  } // namespace pmr\n\n  template<typename _Str>\n    struct __hash_string_base\n    : public __hash_base<size_t, _Str>\n    {\n      size_t\n      operator()(const _Str& __s) const noexcept\n      { return hash<basic_string_view<typename _Str::value_type>>{}(__s); }\n    };\n\n  template<>\n    struct hash<pmr::string>\n    : public __hash_string_base<pmr::string>\n    { };\n#ifdef _GLIBCXX_USE_CHAR8_T\n  template<>\n    struct hash<pmr::u8string>\n    : public __hash_string_base<pmr::u8string>\n    { };\n#endif\n  template<>\n    struct hash<pmr::u16string>\n    : public __hash_string_base<pmr::u16string>\n    { };\n  template<>\n    struct hash<pmr::u32string>\n    : public __hash_string_base<pmr::u32string>\n    { };\n#ifdef _GLIBCXX_USE_WCHAR_T\n  template<>\n    struct hash<pmr::wstring>\n    : public __hash_string_base<pmr::wstring>\n    { };\n#endif\n\n_GLIBCXX_END_NAMESPACE_VERSION\n} // namespace std\n#endif // C++17\n\n#if __cplusplus > 201703L\nnamespace std _GLIBCXX_VISIBILITY(default)\n{\n_GLIBCXX_BEGIN_NAMESPACE_VERSION\n\n#define __cpp_lib_erase_if 202002L\n\n  template<typename _CharT, typename _Traits, typename _Alloc,\n\t   typename _Predicate>\n    inline typename basic_string<_CharT, _Traits, _Alloc>::size_type\n    erase_if(basic_string<_CharT, _Traits, _Alloc>& __cont, _Predicate __pred)\n    {\n      const auto __osz = __cont.size();\n      __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred),\n\t\t   __cont.end());\n      return __osz - __cont.size();\n    }\n\n  template<typename _CharT, typename _Traits, typename _Alloc, typename _Up>\n    inline typename basic_string<_CharT, _Traits, _Alloc>::size_type\n    erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value)\n    {\n      const auto __osz = __cont.size();\n      __cont.erase(std::remove(__cont.begin(), __cont.end(), __value),\n\t\t   __cont.end());\n      return __osz - __cont.size();\n    }\n_GLIBCXX_END_NAMESPACE_VERSION\n} // namespace std\n#endif // C++20\n\n#endif /* _GLIBCXX_STRING */\n","uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string","version":1}}}

I[22:38:21.788] <-- textDocument/didOpen
I[22:38:21.792] Loaded compilation database from d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\.vscode\compile_flags.txt
E[22:38:21.792] System include extraction: invalid file type for 
V[22:38:21.792] Broadcasting compilation database from d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\.vscode
I[22:38:21.792] ASTWorker building file d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string version 1 with command clangd fallback
[d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1]
"C:\\Program Files\\LLVM\\bin\\clang" -xobjective-c++-header "-resource-dir=c:\\Users\\Adam\\AppData\\Roaming\\Code\\User\\globalStorage\\llvm-vs-code-extensions.vscode-clangd\\install\\15.0.6\\clangd_15.0.6\\lib\\clang\\15.0.6" -- "d:\\source\\embedded\\gcc-arm-none-eabi-10.3-2021.10\\arm-none-eabi\\include\\c++\\10.3.1\\string"
V[22:38:21.814] Driver produced command: cc1 -cc1 -triple x86_64-pc-windows-msvc19.35.32215 -fsyntax-only -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name string -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic "-fcoverage-compilation-dir=d:\\source\\embedded\\gcc-arm-none-eabi-10.3-2021.10\\arm-none-eabi\\include\\c++\\10.3.1" -resource-dir "c:\\Users\\Adam\\AppData\\Roaming\\Code\\User\\globalStorage\\llvm-vs-code-extensions.vscode-clangd\\install\\15.0.6\\clangd_15.0.6\\lib\\clang\\15.0.6" -c-isystem d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include -internal-isystem "c:\\Users\\Adam\\AppData\\Roaming\\Code\\User\\globalStorage\\llvm-vs-code-extensions.vscode-clangd\\install\\15.0.6\\clangd_15.0.6\\lib\\clang\\15.0.6\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.35.32215\\atlmfc\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22000.0\\cppwinrt" -fdeprecated-macro "-fdebug-compilation-dir=d:\\source\\embedded\\gcc-arm-none-eabi-10.3-2021.10\\arm-none-eabi\\include\\c++\\10.3.1" -ferror-limit 19 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.35.32215 -std=c++14 -fdelayed-template-parsing -fobjc-runtime=gcc -fobjc-encode-cxx-class-template-spec -fobjc-exceptions -fcxx-exceptions -fexceptions -no-round-trip-args -faddrsig -x objective-c++-header "d:\\source\\embedded\\gcc-arm-none-eabi-10.3-2021.10\\arm-none-eabi\\include\\c++\\10.3.1\\string"
I[22:38:21.814] --> textDocument/clangd.fileStatus
V[22:38:21.814] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Update","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:21.814] Building first preamble for d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string version 1
V[22:38:21.833] Dropped diagnostic: d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string: #pragma system_header ignored in main file
V[22:38:21.886] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:21.886] <-- textDocument/codeAction(1)
V[22:38:21.896] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:21.896] <-- textDocument/documentLink(2)
V[22:38:21.903] <<< {"id":3,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":8,"line":124},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:21.903] <-- textDocument/inlayHint(3)
V[22:38:22.106] indexed preamble AST for d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string version 1:
  symbol slab: 3544 symbols, 941120 bytes
  ref slab: 0 symbols, 0 refs, 136 bytes
  relations slab: 3 relations, 75 bytes
V[22:38:22.167] Build dynamic index for header symbols with estimated memory usage of 2753352 bytes
V[22:38:22.174] Built preamble of size 2205152 for file d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string version 1 in 0.36 seconds
I[22:38:22.175] --> workspace/semanticTokens/refresh(0)
V[22:38:22.175] >>> {"id":0,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}

I[22:38:22.175] --> textDocument/clangd.fileStatus
V[22:38:22.175] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Build AST","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:22.233] indexed file AST for d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string version 1:
  symbol slab: 1 symbols, 4456 bytes
  ref slab: 2 symbols, 4 refs, 4280 bytes
  relations slab: 0 relations, 24 bytes
V[22:38:22.234] Build dynamic index for main-file symbols with estimated memory usage of 11656 bytes
I[22:38:22.234] --> textDocument/publishDiagnostics
V[22:38:22.234] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"pp_file_not_found","message":"'bits/c++config.h' file not found","range":{"end":{"character":27,"line":37},"start":{"character":9,"line":37}},"relatedInformation":[],"severity":1,"source":"clang"}],"uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string","version":1}}

V[22:38:22.234] ASTWorker running EnumerateTweaks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:22.234] --> reply:textDocument/codeAction(1) 348 ms
V[22:38:22.234] >>> {"id":1,"jsonrpc":"2.0","result":[]}

V[22:38:22.234] ASTWorker running DocumentLinks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:22.235] --> reply:textDocument/documentLink(2) 339 ms
V[22:38:22.235] >>> {"id":2,"jsonrpc":"2.0","result":[{"range":{"end":{"character":27,"line":38},"start":{"character":9,"line":38}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stringfwd.h"},{"range":{"end":{"character":29,"line":39},"start":{"character":9,"line":39}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/char_traits.h"},{"range":{"end":{"character":27,"line":40},"start":{"character":9,"line":40}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/allocator.h"},{"range":{"end":{"character":33,"line":41},"start":{"character":9,"line":41}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/cpp_type_traits.h"},{"range":{"end":{"character":27,"line":42},"start":{"character":9,"line":42}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/localefwd.h"},{"range":{"end":{"character":32,"line":43},"start":{"character":9,"line":43}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/ostream_insert.h"},{"range":{"end":{"character":41,"line":44},"start":{"character":9,"line":44}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_types.h"},{"range":{"end":{"character":41,"line":45},"start":{"character":9,"line":45}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_funcs.h"},{"range":{"end":{"character":30,"line":46},"start":{"character":9,"line":46}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator.h"},{"range":{"end":{"character":30,"line":47},"start":{"character":9,"line":47}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_function.h"},{"range":{"end":{"character":31,"line":48},"start":{"character":9,"line":48}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/ext/numeric_traits.h"},{"range":{"end":{"character":30,"line":49},"start":{"character":9,"line":49}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_algobase.h"},{"range":{"end":{"character":30,"line":53},"start":{"character":9,"line":53}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/range_access.h"},{"range":{"end":{"character":30,"line":54},"start":{"character":9,"line":54}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.h"},{"range":{"end":{"character":32,"line":55},"start":{"character":9,"line":55}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.tcc"}]}

V[22:38:22.235] ASTWorker running InlayHints on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:22.235] --> reply:textDocument/inlayHint(3) 332 ms
V[22:38:22.235] >>> {"id":3,"jsonrpc":"2.0","result":[]}

I[22:38:22.236] --> textDocument/clangd.fileStatus
V[22:38:22.236] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:22.750] <<< {"id":0,"jsonrpc":"2.0","result":null}

I[22:38:22.750] <-- reply(0)
V[22:38:22.936] <<< {"id":4,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:22.936] <-- textDocument/semanticTokens/full(4)
V[22:38:22.936] ASTWorker running SemanticHighlights on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:22.937] --> reply:textDocument/semanticTokens/full(4) 0 ms
V[22:38:22.937] >>> {"id":4,"jsonrpc":"2.0","result":{"data":[32,8,15,19,8192,1,8,15,19,8193,17,0,25,20,0,1,0,56,20,0,1,0,15,20,0,5,0,52,20,0,1,0,42,20,0,1,0,1,20,0,1,0,32,20,0,1,0,17,20,0,1,0,55,20,0,1,0,69,20,0,1,0,61,20,0,1,0,41,20,0,1,0,41,20,0,1,0,27,20,0,1,0,44,20,0,1,0,6,20,0,1,0,45,20,0,1,0,45,20,0,1,0,27,20,0,1,0,44,20,0,1,0,6,20,0,1,0,20,20,0,1,0,0,20,0,1,0,25,20,0,1,0,29,20,0,1,0,38,20,0,1,0,5,20,0,1,0,12,20,0,1,0,48,20,0,1,0,75,20,0,1,0,6,20,0,1,0,0,20,0,1,0,12,20,0,1,0,28,20,0,1,0,44,20,0,1,0,8,20,0,1,0,27,20,0,1,0,12,20,0,1,0,30,20,0,1,0,46,20,0,1,0,8,20,0,1,0,6,20,0,1,0,12,20,0,1,0,31,20,0,1,0,47,20,0,1,0,8,20,0,1,0,12,20,0,1,0,31,20,0,1,0,47,20,0,1,0,8,20,0,1,0,27,20,0,1,0,12,20,0,1,0,29,20,0,1,0,45,20,0,1,0,8,20,0,1,0,6,20,0,1,0,0,20,0,1,0,30,20,0,1,0,18,20,0,1,0,15,20,0,2,0,25,20,0,1,0,42,20,0,1,0,1,20,0,1,0,32,20,0,1,0,0,20,0,1,0,34,20,0,1,0,0,20,0,1,0,62,20,0,1,0,24,20,0,1,0,68,20,0,1,0,78,20,0,1,0,5,20,0,1,0,39,20,0,1,0,72,20,0,1,0,19,20,0,1,0,35,20,0,1,0,5,20,0,1,0,0,20,0,1,0,76,20,0,1,0,68,20,0,1,0,76,20,0,1,0,5,20,0,1,0,39,20,0,1,0,70,20,0,1,0,19,20,0,1,0,35,20,0,1,0,5,20,0,1,0,30,20,0,1,0,18,20,0,1,0,15,20,0],"resultId":"1"}}

I[22:38:22.937] --> textDocument/clangd.fileStatus
V[22:38:22.937] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:22.970] <<< {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"off"}}

I[22:38:22.970] <-- $/setTrace
I[22:38:22.970] unhandled notification $/setTrace
V[22:38:22.987] <<< {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"off"}}

I[22:38:22.987] <-- $/setTrace
I[22:38:22.987] unhandled notification $/setTrace
V[22:38:23.005] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":1}}

I[22:38:23.006] <-- $/cancelRequest
V[22:38:23.007] <<< {"id":5,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.008] <-- textDocument/codeAction(5)
V[22:38:23.008] ASTWorker running EnumerateTweaks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.008] --> reply:textDocument/codeAction(5) 0 ms
V[22:38:23.008] >>> {"id":5,"jsonrpc":"2.0","result":[]}

I[22:38:23.008] --> textDocument/clangd.fileStatus
V[22:38:23.008] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:23.031] <<< {"id":6,"jsonrpc":"2.0","method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.031] <-- textDocument/documentSymbol(6)
V[22:38:23.032] ASTWorker running DocumentSymbols on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.032] --> reply:textDocument/documentSymbol(6) 0 ms
V[22:38:23.032] >>> {"id":6,"jsonrpc":"2.0","result":[]}

I[22:38:23.032] --> textDocument/clangd.fileStatus
V[22:38:23.032] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:23.039] <<< {"id":7,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.040] <-- textDocument/documentLink(7)
V[22:38:23.040] ASTWorker running DocumentLinks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.041] --> reply:textDocument/documentLink(7) 1 ms
V[22:38:23.041] >>> {"id":7,"jsonrpc":"2.0","result":[{"range":{"end":{"character":27,"line":38},"start":{"character":9,"line":38}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stringfwd.h"},{"range":{"end":{"character":29,"line":39},"start":{"character":9,"line":39}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/char_traits.h"},{"range":{"end":{"character":27,"line":40},"start":{"character":9,"line":40}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/allocator.h"},{"range":{"end":{"character":33,"line":41},"start":{"character":9,"line":41}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/cpp_type_traits.h"},{"range":{"end":{"character":27,"line":42},"start":{"character":9,"line":42}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/localefwd.h"},{"range":{"end":{"character":32,"line":43},"start":{"character":9,"line":43}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/ostream_insert.h"},{"range":{"end":{"character":41,"line":44},"start":{"character":9,"line":44}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_types.h"},{"range":{"end":{"character":41,"line":45},"start":{"character":9,"line":45}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_funcs.h"},{"range":{"end":{"character":30,"line":46},"start":{"character":9,"line":46}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator.h"},{"range":{"end":{"character":30,"line":47},"start":{"character":9,"line":47}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_function.h"},{"range":{"end":{"character":31,"line":48},"start":{"character":9,"line":48}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/ext/numeric_traits.h"},{"range":{"end":{"character":30,"line":49},"start":{"character":9,"line":49}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_algobase.h"},{"range":{"end":{"character":30,"line":53},"start":{"character":9,"line":53}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/range_access.h"},{"range":{"end":{"character":30,"line":54},"start":{"character":9,"line":54}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.h"},{"range":{"end":{"character":32,"line":55},"start":{"character":9,"line":55}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.tcc"}]}

I[22:38:23.042] --> textDocument/clangd.fileStatus
V[22:38:23.042] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}}

I[22:38:23.042] <-- $/cancelRequest
V[22:38:23.042] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:23.044] <<< {"id":8,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.045] <-- textDocument/codeAction(8)
V[22:38:23.045] ASTWorker running EnumerateTweaks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.045] --> reply:textDocument/codeAction(8) 0 ms
V[22:38:23.045] >>> {"id":8,"jsonrpc":"2.0","result":[]}

I[22:38:23.045] --> textDocument/clangd.fileStatus
V[22:38:23.045] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:23.046] <<< {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":7}}

I[22:38:23.046] <-- $/cancelRequest
V[22:38:23.273] <<< {"id":9,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.273] <-- textDocument/documentLink(9)
V[22:38:23.273] ASTWorker running DocumentLinks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.274] --> reply:textDocument/documentLink(9) 0 ms
V[22:38:23.274] >>> {"id":9,"jsonrpc":"2.0","result":[{"range":{"end":{"character":27,"line":38},"start":{"character":9,"line":38}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stringfwd.h"},{"range":{"end":{"character":29,"line":39},"start":{"character":9,"line":39}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/char_traits.h"},{"range":{"end":{"character":27,"line":40},"start":{"character":9,"line":40}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/allocator.h"},{"range":{"end":{"character":33,"line":41},"start":{"character":9,"line":41}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/cpp_type_traits.h"},{"range":{"end":{"character":27,"line":42},"start":{"character":9,"line":42}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/localefwd.h"},{"range":{"end":{"character":32,"line":43},"start":{"character":9,"line":43}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/ostream_insert.h"},{"range":{"end":{"character":41,"line":44},"start":{"character":9,"line":44}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_types.h"},{"range":{"end":{"character":41,"line":45},"start":{"character":9,"line":45}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_funcs.h"},{"range":{"end":{"character":30,"line":46},"start":{"character":9,"line":46}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator.h"},{"range":{"end":{"character":30,"line":47},"start":{"character":9,"line":47}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_function.h"},{"range":{"end":{"character":31,"line":48},"start":{"character":9,"line":48}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/ext/numeric_traits.h"},{"range":{"end":{"character":30,"line":49},"start":{"character":9,"line":49}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_algobase.h"},{"range":{"end":{"character":30,"line":53},"start":{"character":9,"line":53}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/range_access.h"},{"range":{"end":{"character":30,"line":54},"start":{"character":9,"line":54}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.h"},{"range":{"end":{"character":32,"line":55},"start":{"character":9,"line":55}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.tcc"}]}

I[22:38:23.274] --> textDocument/clangd.fileStatus
V[22:38:23.274] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:23.881] <<< {"id":10,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:23.881] <-- textDocument/documentLink(10)
V[22:38:23.881] ASTWorker running DocumentLinks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:23.882] --> reply:textDocument/documentLink(10) 0 ms
V[22:38:23.882] >>> {"id":10,"jsonrpc":"2.0","result":[{"range":{"end":{"character":27,"line":38},"start":{"character":9,"line":38}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stringfwd.h"},{"range":{"end":{"character":29,"line":39},"start":{"character":9,"line":39}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/char_traits.h"},{"range":{"end":{"character":27,"line":40},"start":{"character":9,"line":40}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/allocator.h"},{"range":{"end":{"character":33,"line":41},"start":{"character":9,"line":41}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/cpp_type_traits.h"},{"range":{"end":{"character":27,"line":42},"start":{"character":9,"line":42}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/localefwd.h"},{"range":{"end":{"character":32,"line":43},"start":{"character":9,"line":43}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/ostream_insert.h"},{"range":{"end":{"character":41,"line":44},"start":{"character":9,"line":44}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_types.h"},{"range":{"end":{"character":41,"line":45},"start":{"character":9,"line":45}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator_base_funcs.h"},{"range":{"end":{"character":30,"line":46},"start":{"character":9,"line":46}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_iterator.h"},{"range":{"end":{"character":30,"line":47},"start":{"character":9,"line":47}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_function.h"},{"range":{"end":{"character":31,"line":48},"start":{"character":9,"line":48}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/ext/numeric_traits.h"},{"range":{"end":{"character":30,"line":49},"start":{"character":9,"line":49}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/stl_algobase.h"},{"range":{"end":{"character":30,"line":53},"start":{"character":9,"line":53}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/range_access.h"},{"range":{"end":{"character":30,"line":54},"start":{"character":9,"line":54}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.h"},{"range":{"end":{"character":32,"line":55},"start":{"character":9,"line":55}},"target":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/bits/basic_string.tcc"}]}

I[22:38:23.882] --> textDocument/clangd.fileStatus
V[22:38:23.882] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:24.093] <<< {"id":11,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full/delta","params":{"previousResultId":"1","textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:24.093] <-- textDocument/semanticTokens/full/delta(11)
V[22:38:24.094] ASTWorker running SemanticHighlights on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:24.094] --> reply:textDocument/semanticTokens/full/delta(11) 0 ms
V[22:38:24.094] >>> {"id":11,"jsonrpc":"2.0","result":{"edits":[],"resultId":"2"}}

I[22:38:24.094] --> textDocument/clangd.fileStatus
V[22:38:24.094] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:25.227] <<< {"id":12,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[],"triggerKind":2},"range":{"end":{"character":0,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:25.227] <-- textDocument/codeAction(12)
V[22:38:25.228] ASTWorker running EnumerateTweaks on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:25.228] --> reply:textDocument/codeAction(12) 0 ms
V[22:38:25.228] >>> {"id":12,"jsonrpc":"2.0","result":[]}

I[22:38:25.228] --> textDocument/clangd.fileStatus
V[22:38:25.228] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:25.242] <<< {"id":13,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":8,"line":124},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:25.242] <-- textDocument/inlayHint(13)
V[22:38:25.242] ASTWorker running InlayHints on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:25.242] --> reply:textDocument/inlayHint(13) 0 ms
V[22:38:25.242] >>> {"id":13,"jsonrpc":"2.0","result":[]}

I[22:38:25.243] --> textDocument/clangd.fileStatus
V[22:38:25.243] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

V[22:38:25.718] <<< {"id":14,"jsonrpc":"2.0","method":"textDocument/semanticTokens/full/delta","params":{"previousResultId":"2","textDocument":{"uri":"file:///d%3A/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}}

I[22:38:25.718] <-- textDocument/semanticTokens/full/delta(14)
V[22:38:25.718] ASTWorker running SemanticHighlights on version 1 of d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string
I[22:38:25.719] --> reply:textDocument/semanticTokens/full/delta(14) 0 ms
V[22:38:25.719] >>> {"id":14,"jsonrpc":"2.0","result":{"edits":[],"resultId":"3"}}

I[22:38:25.719] --> textDocument/clangd.fileStatus
V[22:38:25.719] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///d:/source/embedded/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/c%2B%2B/10.3.1/string"}}

System information

clangd version 12.0.0 Editor/LSP plugin: Visual Studio Code 1.77.3 Operating system: Windows 11

HighCommander4 commented 1 year ago

Are you using a project config or a user config file (https://clangd.llvm.org/config.html#files)? Project config files are scoped to apply only to files in the directory tree of the directory containing the config file.

HTD commented 1 year ago

I don't use any additional config files. The very first file attached is a file named .calangd and it sits in project's root. Beside this file, a .vscode/compile_flags.txt file is used that contains only -I flags with project include directories. In gcc-arm-none-eabi-10.3-2021.10 directory there is a GNU Toolchain for STM32 version 10.3.1.

I also tested it with the latest release from ARM (12.2.1), and tried the latest clangd version, that is 15.0.6.

I believe there is no user or system wide configuration file beside that.

As I've seen in output, there are multiple -internal-isystem entries with Windows and other kits, they appear when --query-driver argument is used. The exact value of the driver string is in the logs.

I tested it also without --query-drivers - then ALL system includes was ignored. So - clangd said it doesn't see string. With --query-driver it sees the directory the string lives in, that is arm-none-eabi\include\c++\12.2.1 (relative to toolchain root), but not arm-none-eabi\include\c++\12.2.1\arm-none-eabi where bits directory lives, containing c++config.h that is reported missing.

Excuse me the different versions given, I just opened the latest toolchain to triple-check where the files are. I triple-checked if the directory names are correct when I was testing both versions. Also - all -isystem directories are visible from non-system file in my project. The only problem is with the files that are included with -isystem or -isyswithroot that are part of the toolchain.

I think the important piece of information is that the files within arm-none-eabi\include\c++\12.2.1 are included correctly, but the ones in arm-none-eabi\include\c++\12.2.1\arm-none-eabi are not.

One more thing: I provide: --query-driver=D:\\arm\\gcc-arm-none-eabi-10.3-2021.10\\bin\\arm-none-eabi-g++.exe. I get:

V[14:35:34.576] System include extraction: driver clang expanded to C:\Program Files\LLVM\bin\clang.exe
V[14:35:34.576] System include extraction: not allowed driver C:\Program Files\LLVM\bin\clang.exe

Why is that?

I tried specifying the compiler path with forward slashes, backward slashes, executable only without path (I have it added to the system PATH). Nothing works, it seems like it ignores the argument completely, I can provide qwerty and it behaves the same.

Seems like the -query-driver= parameter doesn't work.

I tested it again with clangd in versions 15.0.0, 15.0.3, 15.0.6, 16.0.2. In versions before 16.0.2:

Driver produced command: cc1 -cc1 -triple x86_64-pc-windows-msvc19.35.32215

For the -query-driver=D:\\arm\\gcc-arm-none-eabi-10.3-2021.10\\bin\\arm-none-eabi-g++.exe argument. Obviously wrong, here's what it should receive:

arm-none-eabi-g++.exe -dumpmachine

arm-none-eabi

arm-none-eabi-g++.exe -dumpversion

10.3.1

arm-none-eabi-g++.exe -print-sysroot

d:\arm\gcc-arm-none-eabi-10.3-2021.10\bin\../arm-none-eabi

< arm-none-eabi-g++.exe -print-multiarch


Since 16.0.2 it says straight it uses other driver than specified. Also doesn't work, no toolchain includes are resolved.
HighCommander4 commented 1 year ago

The very first file attached is a file named .calangd and it sits in project's root.

Repeating from my last comment:

Project config files are scoped to apply only to files in the directory tree of the directory containing the config file.

Since you reported originally that:

It works perfecly for any file in the project.

It doesn't work for system includes as or . For those files I get errors like this:

So, if you have a project config file at d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\.clangd

That will apply to d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\SomeSubdirectory\SomeFile.cpp (because that's in the directory tree d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\)

It will not apply to d:\source\embedded\gcc-arm-none-eabi-10.3-2021.10\arm-none-eabi\include\c++\10.3.1\string (because that's not in the directory tree d:\Source\CodeDog\SWD\Software\SWD-STM32H745I-DISCO\)

To apply to files outside the project directory, configuration needs to go into the user config file.