microsoft / microsoft/vscode-cpptools

Intermittent and incorrect highlighting of a define macro as an unkown

Offen
#7,195 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

bug IntelliSense cache Language Service more votes needed verified 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: CentOS7.8
  • VS Code Version: 1.53.1
  • C/C++ Extension Version: 1.3.0-insider
  • Other extensions you installed (and if the issue persists after disabling them): Git Graph, Todo Tree, GitHub - and no effect
  • Does this issue involve using SSH remote to run the extension on a remote machine?: No
  • A clear and concise description of what the bug is, including information about the workspace (i.e. is the workspace a single project or multiple projects, size of the project, etc).
    Incorrectly identifying a macro define as unknown, but still allows peeking it.

Steps to reproduce

  1. Open a new file jm.c
  2. Paste the below code
  3. Create a ide5.h file that is empty
  4. Create a emptylist.h with one-line entry: "#define EMPTY_LIST_A {} "
  5. Any edit to jm.c will highlight the EMPTY_LIST_A as unknown
// Empty File
#include "ide5.h"

#define SOME_DEFINE
#ifdef SOME_DEFINE
  static int somevariable = 1 ;
#else
#endif

// Define EMPTY_LIST_A as {} : #define EMPTY_LIST_A     {}
#include "emptylist.h"

static myListA[5] = {};
static myListB[5] = EMPTY_LIST_A ;

Expected behavior

I expected that it would highlight EMPTY_LIST_A as a macro and show its definition, not squiggle underline it. However the squiggle comes and goes depending on unrelated lines or even blank spaces.

Logs
cpptools/didChangeCppProperties
Attempting to get defaults from C compiler in "compilerPath" property: '/usr/bin/clang'
Compiler query command line: "/usr/bin/clang" -std=c99 -Wp,-v -E -dD -x c -m64 -fno-blocks /dev/null
terminating child process: 61887
Code browsing service initialized
Attempting to get defaults from C++ compiler in "compilerPath" property: '/usr/bin/clang'
Compiler query command line: "/usr/bin/clang" -std=c++98 -Wp,-v -E -dD -x c++ -m64 -fno-blocks /dev/null
terminating child process: 61890
  Folder: /include/ will be indexed
  Folder: /usr/include/ will be indexed
  Folder: /usr/lib/clang/3.4.2/include/ will be indexed
  Folder: /usr/local/include/ will be indexed
  Folder: /home/lmurray/fpgaIDE/VSCodeBug/ will be indexed
Populate include completion cache.
Discovering files...
  Processing folder (recursive): /include/
  Processing folder (recursive): /usr/include/
  Processing folder (recursive): /usr/lib/clang/3.4.2/include/
  Processing folder (recursive): /usr/local/include/
  Processing folder (recursive): /home/lmurray/fpgaIDE/VSCodeBug/
  Discovering files: 14624 file(s) processed
  0 file(s) removed from database
Done discovering files.
Parsing remaining files...
  Parsing: 0 files(s) processed
Done parsing remaining files.
textDocument/didOpen: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/activeDocumentChange: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/textEditorSelectionChange
cpptools/getDocumentSymbols: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 2)
cpptools/textEditorSelectionChange
cpptools/getDocumentSymbols
sending compilation args for /home/lmurray/fpgaIDE/VSCodeBug/jm.c
  include: /usr/local/include
  include: /usr/lib/clang/3.4.2/include
  include: /include
  include: /usr/include
  define: __llvm__=1
  define: __clang__=1
  define: __clang_major__=3
  define: __clang_minor__=4
  define: __clang_patchlevel__=2
  define: __clang_version__="3.4.2 (tags/RELEASE_34/dot2-final)"
  define: __GNUC_MINOR__=2
  define: __GNUC_PATCHLEVEL__=1
  define: __GNUC__=4
  define: __GXX_ABI_VERSION=1002
  define: __ATOMIC_RELAXED=0
  define: __ATOMIC_CONSUME=1
  define: __ATOMIC_ACQUIRE=2
  define: __ATOMIC_RELEASE=3
  define: __ATOMIC_ACQ_REL=4
  define: __ATOMIC_SEQ_CST=5
  define: __PRAGMA_REDEFINE_EXTNAME=1
  define: __VERSION__="4.2.1 Compatible Clang 3.4.2 (tags/RELEASE_34/dot2-final)"
  define: __STRICT_ANSI__=1
  define: __CONSTANT_CFSTRINGS__=1
  define: __GXX_RTTI=1
  define: __ORDER_LITTLE_ENDIAN__=1234
  define: __ORDER_BIG_ENDIAN__=4321
  define: __ORDER_PDP_ENDIAN__=3412
  define: __BYTE_ORDER__=__ORDER_LITTLE_ENDIAN__
  define: _LP64=1
  define: __LP64__=1
  define: __CHAR_BIT__=8
  define: __SCHAR_MAX__=127
  define: __SHRT_MAX__=32767
  define: __INT_MAX__=2147483647
  define: __LONG_MAX__=9223372036854775807L
  define: __LONG_LONG_MAX__=9223372036854775807LL
  define: __WCHAR_MAX__=2147483647
  define: __INTMAX_MAX__=9223372036854775807L
  define: __SIZE_MAX__=18446744073709551615UL
  define: __SIZEOF_DOUBLE__=8
  define: __SIZEOF_FLOAT__=4
  define: __SIZEOF_INT__=4
  define: __SIZEOF_LONG__=8
  define: __SIZEOF_LONG_DOUBLE__=16
  define: __SIZEOF_LONG_LONG__=8
  define: __SIZEOF_POINTER__=8
  define: __SIZEOF_SHORT__=2
  define: __SIZEOF_PTRDIFF_T__=8
  define: __SIZEOF_SIZE_T__=8
  define: __SIZEOF_WCHAR_T__=4
  define: __SIZEOF_WINT_T__=4
  define: __SIZEOF_INT128__=16
  define: __INTMAX_TYPE__=long int
  define: __UINTMAX_TYPE__=long unsigned int
  define: __INTMAX_WIDTH__=64
  define: __PTRDIFF_TYPE__=long int
  define: __PTRDIFF_WIDTH__=64
  define: __INTPTR_TYPE__=long int
  define: __INTPTR_WIDTH__=64
  define: __SIZE_TYPE__=long unsigned int
  define: __SIZE_WIDTH__=64
  define: __WCHAR_TYPE__=int
  define: __WCHAR_WIDTH__=32
  define: __WINT_TYPE__=unsigned int
  define: __WINT_WIDTH__=32
  define: __SIG_ATOMIC_WIDTH__=32
  define: __CHAR16_TYPE__=unsigned short
  define: __CHAR32_TYPE__=unsigned int
  define: __FLT_DENORM_MIN__=1.40129846e-45F
  define: __FLT_HAS_DENORM__=1
  define: __FLT_DIG__=6
  define: __FLT_EPSILON__=1.19209290e-7F
  define: __FLT_HAS_INFINITY__=1
  define: __FLT_HAS_QUIET_NAN__=1
  define: __FLT_MANT_DIG__=24
  define: __FLT_MAX_10_EXP__=38
  define: __FLT_MAX_EXP__=128
  define: __FLT_MAX__=3.40282347e+38F
  define: __FLT_MIN_10_EXP__=(-37)
  define: __FLT_MIN_EXP__=(-125)
  define: __FLT_MIN__=1.17549435e-38F
  define: __DBL_DENORM_MIN__=4.9406564584124654e-324
  define: __DBL_HAS_DENORM__=1
  define: __DBL_DIG__=15
  define: __DBL_EPSILON__=2.2204460492503131e-16
  define: __DBL_HAS_INFINITY__=1
  define: __DBL_HAS_QUIET_NAN__=1
  define: __DBL_MANT_DIG__=53
  define: __DBL_MAX_10_EXP__=308
  define: __DBL_MAX_EXP__=1024
  define: __DBL_MAX__=1.7976931348623157e+308
  define: __DBL_MIN_10_EXP__=(-307)
  define: __DBL_MIN_EXP__=(-1021)
  define: __DBL_MIN__=2.2250738585072014e-308
  define: __LDBL_DENORM_MIN__=3.64519953188247460253e-4951L
  define: __LDBL_HAS_DENORM__=1
  define: __LDBL_DIG__=18
  define: __LDBL_EPSILON__=1.08420217248550443401e-19L
  define: __LDBL_HAS_INFINITY__=1
  define: __LDBL_HAS_QUIET_NAN__=1
  define: __LDBL_MANT_DIG__=64
  define: __LDBL_MAX_10_EXP__=4932
  define: __LDBL_MAX_EXP__=16384
  define: __LDBL_MAX__=1.18973149535723176502e+4932L
  define: __LDBL_MIN_10_EXP__=(-4931)
  define: __LDBL_MIN_EXP__=(-16381)
  define: __LDBL_MIN__=3.36210314311209350626e-4932L
  define: __POINTER_WIDTH__=64
  define: __WINT_UNSIGNED__=1
  define: __INT8_TYPE__=char
  define: __INT16_TYPE__=short
  define: __INT32_TYPE__=int
  define: __INT64_TYPE__=long int
  define: __INT64_C_SUFFIX__=L
  define: __USER_LABEL_PREFIX__=
  define: __FINITE_MATH_ONLY__=0
  define: __GNUC_STDC_INLINE__=1
  define: __GCC_ATOMIC_TEST_AND_SET_TRUEVAL=1
  define: __GCC_ATOMIC_BOOL_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR16_T_LOCK_FREE=2
  define: __GCC_ATOMIC_CHAR32_T_LOCK_FREE=2
  define: __GCC_ATOMIC_WCHAR_T_LOCK_FREE=2
  define: __GCC_ATOMIC_SHORT_LOCK_FREE=2
  define: __GCC_ATOMIC_INT_LOCK_FREE=2
  define: __GCC_ATOMIC_LONG_LOCK_FREE=2
  define: __GCC_ATOMIC_LLONG_LOCK_FREE=2
  define: __GCC_ATOMIC_POINTER_LOCK_FREE=2
  define: __NO_INLINE__=1
  define: __FLT_EVAL_METHOD__=0
  define: __FLT_RADIX__=2
  define: __DECIMAL_DIG__=21
  define: __amd64__=1
  define: __amd64=1
  define: __x86_64=1
  define: __x86_64__=1
  define: __k8=1
  define: __k8__=1
  define: __tune_k8__=1
  define: __LITTLE_ENDIAN__=1
  define: __REGISTER_PREFIX__=
  define: __NO_MATH_INLINES=1
  define: __SSE2__=1
  define: __SSE2_MATH__=1
  define: __SSE__=1
  define: __SSE_MATH__=1
  define: __MMX__=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_1=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_2=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4=1
  define: __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8=1
  define: __unix=1
  define: __unix__=1
  define: __linux=1
  define: __linux__=1
  define: __gnu_linux__=1
  define: __ELF__=1
  define: __STDC__=1
  define: __STDC_HOSTED__=1
  define: __STDC_VERSION__=199901L
  define: __STDC_UTF_16__=1
  define: __STDC_UTF_32__=1
  other: --clang
  other: --clang_version=30402
  stdver: c99
  intelliSenseMode: linux-clang-x64
Checking for syntax errors: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
Queueing IntelliSense update for files in translation unit of: /home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/getSemanticTokens: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 3)
cpptools/getDocumentSymbols: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 4)
cpptools/getDocumentSymbols
cpptools/getCodeActions: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 5)
cpptools/getFoldingRanges: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 6)
cpptools/finishUpdateSquiggles
Error squiggle count: 1
terminating child process: 61915
Update IntelliSense time (sec): 0.276
cpptools/getFoldingRanges: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 7)
cpptools/getCodeActions: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 8)
idle loop: reparsing the active document
Checking for syntax errors: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
Queueing IntelliSense update for files in translation unit of: /home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/finishUpdateSquiggles
Error squiggle count: 1
Update IntelliSense time (sec): 0.254
cpptools/getSemanticTokens: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 9)
cpptools/getFoldingRanges: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 10)
cpptools/getCodeActions: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 11)
cpptools/getDocumentSymbols: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 12)
cpptools/getDocumentSymbols
cpptools/getDocumentSymbols: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 13)
cpptools/activeDocumentChange: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/textEditorSelectionChange
cpptools/getDocumentSymbols
cpptools/getFoldingRanges: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 14)
cpptools/getCodeActions: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 15)
idle loop: reparsing the active document
Checking for syntax errors: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c
Queueing IntelliSense update for files in translation unit of: /home/lmurray/fpgaIDE/VSCodeBug/jm.c
cpptools/finishUpdateSquiggles
Error squiggle count: 1
Update IntelliSense time (sec): 0.254
cpptools/getSemanticTokens: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 16)
cpptools/getFoldingRanges: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 17)
cpptools/getCodeActions: file:///home/lmurray/fpgaIDE/VSCodeBug/jm.c (id: 18)

Screenshots

image

Additional context

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 das Problem mit jm.c, der leeren ide5.h und der emptylist.h, die EMPTY_LIST_A enthält, unter Verwendung der gemeldeten Einrichtung mit CentOS 7.8, VS Code 1.53.1 und der C/C++-Erweiterung 1.3.0-insider. Beginne mit der Ausgabe von C/C++: Log Diagnostics und den language-server-Logs und verfolge anschließend das Verhalten von semantic-token und squiggle. Als erledigt gilt, wenn EMPTY_LIST_A konsistent als Makro erkannt werden kann, per Peek geöffnet werden kann und nicht fälschlicherweise unterstrichen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, cpp, typescript, vscode
Bereich
developer-experience, tooling
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.