diff options
author | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-26 15:00:56 +0100 |
---|---|---|
committer | Roberto Raggi <roberto.raggi@nokia.com> | 2009-10-26 15:00:56 +0100 |
commit | 1f61dbc3802b73f5ec31a629ff22c92fa01164b1 (patch) | |
tree | b6123e8cba148d593553baa16e25b1c913d76c5e /tests | |
parent | 72da848073bfa895e25a2481239f03d58c486329 (diff) | |
download | qt-creator-1f61dbc3802b73f5ec31a629ff22c92fa01164b1.tar.gz |
Test GenTemplateInstance.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/cplusplus/semantic/tst_semantic.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/auto/cplusplus/semantic/tst_semantic.cpp b/tests/auto/cplusplus/semantic/tst_semantic.cpp index cf2f6e2318..4e1586e68b 100644 --- a/tests/auto/cplusplus/semantic/tst_semantic.cpp +++ b/tests/auto/cplusplus/semantic/tst_semantic.cpp @@ -12,6 +12,8 @@ #include <Names.h> #include <Literals.h> #include <DiagnosticClient.h> +#include <GenTemplateInstance.h> +#include <Overview.h> using namespace CPlusPlus; @@ -101,6 +103,8 @@ private slots: void const_1(); void const_2(); void pointer_to_function_1(); + + void template_instance_1(); }; void tst_Semantic::function_declaration_1() @@ -389,5 +393,29 @@ void tst_Semantic::pointer_to_function_1() QCOMPARE(funTy->scope(), decl->scope()); } +void tst_Semantic::template_instance_1() +{ + QSharedPointer<Document> doc = document("void append(const _Tp &value);"); + QCOMPARE(doc->errorCount, 0U); + QCOMPARE(doc->globals->symbolCount(), 1U); + + Declaration *decl = doc->globals->symbolAt(0)->asDeclaration(); + QVERIFY(decl); + + GenTemplateInstance::Substitution subst; + Name *nameTp = control.nameId(control.findOrInsertIdentifier("_Tp")); + FullySpecifiedType intTy(control.integerType(IntegerType::Int)); + subst.append(qMakePair(nameTp, intTy)); + + GenTemplateInstance inst(&control, subst); + FullySpecifiedType genTy = inst(decl->type()); + + Overview oo; + oo.setShowReturnTypes(true); + + const QString genDecl = oo.prettyType(genTy); + QCOMPARE(genDecl, QString::fromLatin1("void(const int &)")); +} + QTEST_APPLESS_MAIN(tst_Semantic) #include "tst_semantic.moc" |