microsoft / microsoft/vscode-cpptools
Intermittent and incorrect highlighting of a define macro as an unkown
Nessuno ha ancora preso questa issue.
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 14h 46m
- PR unite (30g)
- 61
Descrizione
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
- Open a new file jm.c
- Paste the below code
- Create a ide5.h file that is empty
- Create a emptylist.h with one-line entry: "#define EMPTY_LIST_A {} "
- 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

Additional context
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Riproduci il problema con jm.c, ide5.h vuoto ed emptylist.h contenente EMPTY_LIST_A, utilizzando la configurazione riportata con CentOS 7.8, VS Code 1.53.1 e l'estensione C/C++ 1.3.0-insider. Inizia dall'output di C/C++: Log Diagnostics e dai log del language-server, quindi traccia il comportamento di semantic-token e squiggle. Il lavoro è completato quando EMPTY_LIST_A viene riconosciuto costantemente come macro, può essere visualizzato con Peek e non viene sottolineato erroneamente.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- c, cpp, typescript, vscode
- Ambito
- developer-experience, tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100