forked from qt-creator/qt-creator
C++: handle non-arguments in function parameter scope gracefuly
Task-number: QTCREATORBUG-8316 Change-Id: I8897f75f30d3aeaf049cc792060c582ab1e3343d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
committed by
Nikolai Kosjar
parent
9d7e786b03
commit
857457e057
@@ -177,6 +177,7 @@ private slots:
|
||||
void q_enum_1();
|
||||
|
||||
void lambda_1();
|
||||
void lambda_2();
|
||||
|
||||
void diagnostic_error();
|
||||
};
|
||||
@@ -722,6 +723,33 @@ void tst_Semantic::lambda_1()
|
||||
QCOMPARE(doc->globals->memberCount(), 1U);
|
||||
}
|
||||
|
||||
void tst_Semantic::lambda_2()
|
||||
{
|
||||
QSharedPointer<Document> doc = document(
|
||||
"\n"
|
||||
"class A {\n"
|
||||
" void f(int i = [](){});\n"
|
||||
"};\n"
|
||||
, false, false, true);
|
||||
|
||||
QCOMPARE(doc->errorCount, 0U);
|
||||
QCOMPARE(doc->globals->memberCount(), 1U);
|
||||
Class *A = doc->globals->memberAt(0)->asClass();
|
||||
QVERIFY(A);
|
||||
QCOMPARE(A->memberCount(), 1U);
|
||||
Declaration *d = A->memberAt(0)->asDeclaration();
|
||||
QCOMPARE(d->name()->identifier()->chars(), "f");
|
||||
Function *ty = d->type()->asFunctionType();
|
||||
QVERIFY(ty);
|
||||
QCOMPARE(ty->argumentCount(), 1U);
|
||||
Argument *arg = ty->argumentAt(0)->asArgument();
|
||||
QVERIFY(arg);
|
||||
const StringLiteral *init = arg->initializer();
|
||||
QVERIFY(init);
|
||||
QCOMPARE(init->chars(), " [](){}");
|
||||
}
|
||||
|
||||
|
||||
void tst_Semantic::diagnostic_error()
|
||||
{
|
||||
QSharedPointer<Document> doc = document("\n"
|
||||
|
||||
Reference in New Issue
Block a user