`__Generic` cases cannot contains both `enum` and `size_t`
I maintainer di solito rispondono entro 1 giorno
@sean-mcmanus ci sta già lavorando.
Dal 13/1/2026.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
bug
__Generic cases cannot contains both enum and size_t within editor
version
1.29.3
description
console output
expected: foo1
expected: foo2
expected: size_t
workaround1: foo1
workaround1: foo2
workaround1: unkown
workaround2: unknown
workaround2: unknown
workaround2: size_t
vscode problems output
[{
"resource": "/path/to/reproduce.c",
"owner": "C/C++: IntelliSense",
"code": "2534",
"severity": 8,
"message": "duplicate association type (\"size_t\" (aka \"unsigned int\")) in _Generic selection",
"source": "C/C++",
"startLineNumber": 30,
"startColumn": 3,
"endLineNumber": 30,
"endColumn": 11,
"origin": "extHost2"
},{
"resource": "/path/to/reproduce.c",
"owner": "C/C++: IntelliSense",
"code": "2534",
"severity": 8,
"message": "duplicate association type (\"size_t\" (aka \"unsigned int\")) in _Generic selection",
"source": "C/C++",
"startLineNumber": 32,
"startColumn": 3,
"endLineNumber": 32,
"endColumn": 11,
"origin": "extHost2"
},{
"resource": "/path/to/reproduce.c",
"owner": "C/C++: IntelliSense",
"code": "3227",
"severity": 8,
"message": "_Generic construct matches multiple types",
"source": "C/C++",
"startLineNumber": 34,
"startColumn": 3,
"endLineNumber": 34,
"endColumn": 11,
"relatedInformation": [
{
"startLineNumber": 34,
"startColumn": 3,
"endLineNumber": 34,
"endColumn": 11,
"message": "the other match is \"foo1\" (aka \"enum <unnamed>\")",
"resource": "/path/to/reproduce.c"
}
],
"origin": "extHost2"
},{
"resource": "/path/to/reproduce.c",
"owner": "C/C++: IntelliSense",
"code": "3227",
"severity": 8,
"message": "_Generic construct matches multiple types",
"source": "C/C++",
"startLineNumber": 39,
"startColumn": 3,
"endLineNumber": 39,
"endColumn": 14,
"relatedInformation": [
{
"startLineNumber": 39,
"startColumn": 3,
"endLineNumber": 39,
"endColumn": 14,
"message": "the other match is \"foo1\" (aka \"enum <unnamed>\")",
"resource": "/path/to/reproduce.c"
}
],
"origin": "extHost2"
}]
When expected(X) = GENERIC(enum, size_t)(X)
#define expected(X) \
printf("%s: %s\n", "expected", \
_Generic((X), foo1: "foo1", foo2: "foo2", size_t: "size_t"))
expected(enum)is OK in terminal, ERR in vscodeexpected(size_t)is OK in terminal, ERR in vscode
When workaround1(X) = GENERIC(enum, default)(X)
workaround1(enum)is OK in terminal, OK in vscodeworkaround1(size_t)isunknownin terminal, ERR in vscode
When workaround2(X) = GENERIC(size_t, default)(X)
workaround2(enum)isunknownin terminal, OK in vscodeworkaround2(size_t)is OK in terminal, OK in vscode
reproduce
code
/path/to/reproduce.c
#include <stddef.h>
#include <stdio.h>
#define expected(X) \
printf("%s: %s\n", "expected", \
_Generic((X), foo1: "foo1", foo2: "foo2", size_t: "size_t"))
#define workaround1(X) \
printf("%s: %s\n", "workaround1", \
_Generic((X), foo1: "foo1", foo2: "foo2", default: "unkown"))
#define workaround2(X) \
printf("%s: %s\n", "workaround2", \
_Generic((X), size_t: "size_t", default: "unknown"))
typedef enum {
foo1_default,
} foo1;
typedef enum {
foo2_default,
} foo2;
int main() {
foo1 value_foo1 = foo1_default;
foo2 value_foo2 = foo2_default;
size_t value_size_t = 0;
// editor error
expected(value_foo1);
// editor error
expected(value_foo2);
// editor error
expected(value_size_t);
workaround1(value_foo1);
workaround1(value_foo2);
// editor error
workaround1(value_size_t);
workaround2(value_foo1);
workaround2(value_foo2);
workaround2(value_size_t);
return 0;
}
- Lingua principale
- TypeScript
- Stelle
- 6.2k
- Fork
- 1.7k
- Merge medio
- 20h 38m
- PR unite (30g)
- 49
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi 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.
Altre issue di microsoft/vscode-cpptools
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
microsoft/vscode-cpptools#14815 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
microsoft/vscode-cpptools#14807 ·
I maintainer di solito rispondono entro 1 giorno
-
Intellisense errors for projects after updating C/C++ extension to a version newer than 1.32.2Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
microsoft/vscode-cpptools#14806 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] Memory LayoutApertaFeature Request Language Service
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
microsoft/vscode-cpptools#14805 · 2 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
erroneous "set but not used" warnings with reference variablesForse già presa @Colengms l’ha presa 5 giorni fa. Apertabug fixed Language Service
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
microsoft/vscode-cpptools#14801 · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di microsoft/vscode-cpptools
Issue simili
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
LucasSantana-Dev/Lucky#2637 ·
I maintainer di solito rispondono entro 1 giorno
-
Show the error reference on the error pageForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaenhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
tomjn/coilbox-hub#454 ·
I maintainer di solito rispondono entro 1 giorno
-
Scheduler button hover stateApertafrontend
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
icssc/peterportal-client#1224 · 1 commento ·
-
testplan-item
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno