forked from qt-creator/qt-creator
CPlusPlus: Add missing type information for enum variables
Consider these two variable declarations: enum EX { EX1, EX2}; EX ex; emum EY { EY1, EY2} ey; The ex variable would correctly get assigned type EX, but the ey variable would not have any type. This is now fixed. Task-number: QTCREATORBUG-7487 Change-Id: I3e09c5766fdb9e6baf3a8d7bc6f2fc581f2d824b Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
1
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
1
src/libs/3rdparty/cplusplus/Bind.cpp
vendored
@@ -3176,6 +3176,7 @@ bool Bind::visit(EnumSpecifierAST *ast)
|
||||
}
|
||||
|
||||
(void) switchScope(previousScope);
|
||||
_type.setType(control()->namedType(this->name(ast->name)));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@@ -369,6 +369,31 @@ void CppEditorPlugin::test_quickfix_data()
|
||||
"}\n"
|
||||
);
|
||||
|
||||
// Checks: All enum values are added as case statements for a blank switch when
|
||||
// the variable is declared alongside the enum definition.
|
||||
QTest::newRow("CompleteSwitchCaseStatement_basic1_enum_with_declaration")
|
||||
<< CppQuickFixFactoryPtr(new CompleteSwitchCaseStatement) << _(
|
||||
"enum EnumType { V1, V2 } t;\n"
|
||||
"\n"
|
||||
"void f()\n"
|
||||
"{\n"
|
||||
" @switch (t) {\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
) << _(
|
||||
"enum EnumType { V1, V2 } t;\n"
|
||||
"\n"
|
||||
"void f()\n"
|
||||
"{\n"
|
||||
" switch (t) {\n"
|
||||
" case V1:\n"
|
||||
" break;\n"
|
||||
" case V2:\n"
|
||||
" break;\n"
|
||||
" }\n"
|
||||
"}\n"
|
||||
);
|
||||
|
||||
// Checks: All enum values are added as case statements for a blank switch with a default case.
|
||||
QTest::newRow("CompleteSwitchCaseStatement_basic2")
|
||||
<< CppQuickFixFactoryPtr(new CompleteSwitchCaseStatement) << _(
|
||||
|
Reference in New Issue
Block a user