summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRoberto Raggi <roberto.raggi@nokia.com>2009-10-26 15:00:56 +0100
committerRoberto Raggi <roberto.raggi@nokia.com>2009-10-26 15:00:56 +0100
commit1f61dbc3802b73f5ec31a629ff22c92fa01164b1 (patch)
treeb6123e8cba148d593553baa16e25b1c913d76c5e /tests
parent72da848073bfa895e25a2481239f03d58c486329 (diff)
downloadqt-creator-1f61dbc3802b73f5ec31a629ff22c92fa01164b1.tar.gz
Test GenTemplateInstance.
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/cplusplus/semantic/tst_semantic.cpp28
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"