From e088541c0d9f7770fc66ad72427e7f29c8e5f1b6 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Wed, 20 Mar 2013 14:54:41 +0100 Subject: [PATCH] C++: Temporary fix for dangling pointers in ResolveExpression Task-number: QTCREATORBUG-8974 Change-Id: Iac114881741bdf8fd477541b28e4d31b7a1760f0 Reviewed-by: Erik Verbruggen --- src/libs/cplusplus/TypeOfExpression.cpp | 2 + src/libs/cplusplus/TypeOfExpression.h | 5 + .../checksymbols/tst_checksymbols.cpp | 742 +++++++++++++++++- 3 files changed, 747 insertions(+), 2 deletions(-) diff --git a/src/libs/cplusplus/TypeOfExpression.cpp b/src/libs/cplusplus/TypeOfExpression.cpp index 589f94e5ba3..ac813fa873f 100644 --- a/src/libs/cplusplus/TypeOfExpression.cpp +++ b/src/libs/cplusplus/TypeOfExpression.cpp @@ -106,6 +106,7 @@ QList TypeOfExpression::operator()(ExpressionAST *expression, m_scope = scope; + m_documents.append(document); m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot); m_lookupContext.setBindings(m_bindings); m_lookupContext.setExpandTemplates(m_expandTemplates); @@ -127,6 +128,7 @@ QList TypeOfExpression::reference(ExpressionAST *expression, m_scope = scope; + m_documents.append(document); m_lookupContext = LookupContext(document, m_thisDocument, m_snapshot); m_lookupContext.setBindings(m_bindings); m_lookupContext.setExpandTemplates(m_expandTemplates); diff --git a/src/libs/cplusplus/TypeOfExpression.h b/src/libs/cplusplus/TypeOfExpression.h index 85efb2fcea1..848999f7d0f 100644 --- a/src/libs/cplusplus/TypeOfExpression.h +++ b/src/libs/cplusplus/TypeOfExpression.h @@ -142,6 +142,11 @@ private: mutable QSharedPointer m_environment; bool m_expandTemplates; + + // FIXME: This is a temporary hack to avoid dangling pointers. + // Keep the expression documents and thus all the symbols and + // their types alive until they are not needed any more. + QList m_documents; }; ExpressionAST CPLUSPLUS_EXPORT *extractExpressionAST(Document::Ptr doc); diff --git a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp index 3ffae19de43..de6435677e9 100644 --- a/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp +++ b/tests/auto/cplusplus/checksymbols/tst_checksymbols.cpp @@ -139,7 +139,7 @@ public: const Use use = future.resultAt(i); // When adding tests, you may want to uncomment the // following line in order to print out all found uses. -// qDebug() << QTest::toString(use); + qDebug() << QTest::toString(use); actualUses.append(use); } @@ -178,6 +178,7 @@ private slots: void test_checksymbols_NestedClassOfEnclosingTemplateUse(); void test_checksymbols_QTCREATORBUG8890_danglingPointer(); + void test_checksymbols_QTCREATORBUG8974_danglingPointer(); }; void tst_CheckSymbols::test_checksymbols_TypeUse() @@ -492,8 +493,745 @@ void tst_CheckSymbols::test_checksymbols_QTCREATORBUG8890_danglingPointer() ; TestData::check(source, expectedUses); - } +} +// TODO: This is a good candidate for a performance test. +void tst_CheckSymbols::test_checksymbols_QTCREATORBUG8974_danglingPointer() +{ + const QByteArray source = + "template \n" + "class Singleton\n" + "{\n" + "public:\n" + " static T& instance() {}\n" + "};\n" + "\n" + "void bar() {}\n" + "\n" + "void foo()\n" + "{\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + " Singleton::instance().bar();\n" + "};\n" + ; + + const QList expectedUses = QList() + << Use(1, 17, 1, SemanticInfo::TypeUse) + << Use(2, 7, 9, SemanticInfo::TypeUse) + << Use(5, 12, 1, SemanticInfo::TypeUse) + << Use(5, 15, 8, SemanticInfo::FunctionUse) + << Use(8, 6, 3, SemanticInfo::FunctionUse) + << Use(10, 6, 3, SemanticInfo::FunctionUse) + << Use(12, 5, 9, SemanticInfo::TypeUse) + << Use(12, 28, 8, SemanticInfo::FunctionUse) + << Use(13, 5, 9, SemanticInfo::TypeUse) + << Use(13, 28, 8, SemanticInfo::FunctionUse) + << Use(14, 5, 9, SemanticInfo::TypeUse) + << Use(14, 28, 8, SemanticInfo::FunctionUse) + << Use(15, 5, 9, SemanticInfo::TypeUse) + << Use(15, 28, 8, SemanticInfo::FunctionUse) + << Use(16, 5, 9, SemanticInfo::TypeUse) + << Use(16, 28, 8, SemanticInfo::FunctionUse) + << Use(17, 5, 9, SemanticInfo::TypeUse) + << Use(17, 28, 8, SemanticInfo::FunctionUse) + << Use(18, 5, 9, SemanticInfo::TypeUse) + << Use(18, 28, 8, SemanticInfo::FunctionUse) + << Use(19, 5, 9, SemanticInfo::TypeUse) + << Use(19, 28, 8, SemanticInfo::FunctionUse) + << Use(20, 5, 9, SemanticInfo::TypeUse) + << Use(20, 28, 8, SemanticInfo::FunctionUse) + << Use(21, 5, 9, SemanticInfo::TypeUse) + << Use(21, 28, 8, SemanticInfo::FunctionUse) + << Use(22, 5, 9, SemanticInfo::TypeUse) + << Use(22, 28, 8, SemanticInfo::FunctionUse) + << Use(23, 5, 9, SemanticInfo::TypeUse) + << Use(23, 28, 8, SemanticInfo::FunctionUse) + << Use(24, 5, 9, SemanticInfo::TypeUse) + << Use(24, 28, 8, SemanticInfo::FunctionUse) + << Use(25, 5, 9, SemanticInfo::TypeUse) + << Use(25, 28, 8, SemanticInfo::FunctionUse) + << Use(26, 5, 9, SemanticInfo::TypeUse) + << Use(26, 28, 8, SemanticInfo::FunctionUse) + << Use(27, 5, 9, SemanticInfo::TypeUse) + << Use(27, 28, 8, SemanticInfo::FunctionUse) + << Use(28, 5, 9, SemanticInfo::TypeUse) + << Use(28, 28, 8, SemanticInfo::FunctionUse) + << Use(29, 5, 9, SemanticInfo::TypeUse) + << Use(29, 28, 8, SemanticInfo::FunctionUse) + << Use(30, 5, 9, SemanticInfo::TypeUse) + << Use(30, 28, 8, SemanticInfo::FunctionUse) + << Use(31, 5, 9, SemanticInfo::TypeUse) + << Use(31, 28, 8, SemanticInfo::FunctionUse) + << Use(32, 5, 9, SemanticInfo::TypeUse) + << Use(32, 28, 8, SemanticInfo::FunctionUse) + << Use(33, 5, 9, SemanticInfo::TypeUse) + << Use(33, 28, 8, SemanticInfo::FunctionUse) + << Use(34, 5, 9, SemanticInfo::TypeUse) + << Use(34, 28, 8, SemanticInfo::FunctionUse) + << Use(35, 5, 9, SemanticInfo::TypeUse) + << Use(35, 28, 8, SemanticInfo::FunctionUse) + << Use(36, 5, 9, SemanticInfo::TypeUse) + << Use(36, 28, 8, SemanticInfo::FunctionUse) + << Use(37, 5, 9, SemanticInfo::TypeUse) + << Use(37, 28, 8, SemanticInfo::FunctionUse) + << Use(38, 5, 9, SemanticInfo::TypeUse) + << Use(38, 28, 8, SemanticInfo::FunctionUse) + << Use(39, 5, 9, SemanticInfo::TypeUse) + << Use(39, 28, 8, SemanticInfo::FunctionUse) + << Use(40, 5, 9, SemanticInfo::TypeUse) + << Use(40, 28, 8, SemanticInfo::FunctionUse) + << Use(41, 5, 9, SemanticInfo::TypeUse) + << Use(41, 28, 8, SemanticInfo::FunctionUse) + << Use(42, 5, 9, SemanticInfo::TypeUse) + << Use(42, 28, 8, SemanticInfo::FunctionUse) + << Use(43, 5, 9, SemanticInfo::TypeUse) + << Use(43, 28, 8, SemanticInfo::FunctionUse) + << Use(44, 5, 9, SemanticInfo::TypeUse) + << Use(44, 28, 8, SemanticInfo::FunctionUse) + << Use(45, 5, 9, SemanticInfo::TypeUse) + << Use(45, 28, 8, SemanticInfo::FunctionUse) + << Use(46, 5, 9, SemanticInfo::TypeUse) + << Use(46, 28, 8, SemanticInfo::FunctionUse) + << Use(47, 5, 9, SemanticInfo::TypeUse) + << Use(47, 28, 8, SemanticInfo::FunctionUse) + << Use(48, 5, 9, SemanticInfo::TypeUse) + << Use(48, 28, 8, SemanticInfo::FunctionUse) + << Use(49, 5, 9, SemanticInfo::TypeUse) + << Use(49, 28, 8, SemanticInfo::FunctionUse) + << Use(50, 5, 9, SemanticInfo::TypeUse) + << Use(50, 28, 8, SemanticInfo::FunctionUse) + << Use(51, 5, 9, SemanticInfo::TypeUse) + << Use(51, 28, 8, SemanticInfo::FunctionUse) + << Use(52, 5, 9, SemanticInfo::TypeUse) + << Use(52, 28, 8, SemanticInfo::FunctionUse) + << Use(53, 5, 9, SemanticInfo::TypeUse) + << Use(53, 28, 8, SemanticInfo::FunctionUse) + << Use(54, 5, 9, SemanticInfo::TypeUse) + << Use(54, 28, 8, SemanticInfo::FunctionUse) + << Use(55, 5, 9, SemanticInfo::TypeUse) + << Use(55, 28, 8, SemanticInfo::FunctionUse) + << Use(56, 5, 9, SemanticInfo::TypeUse) + << Use(56, 28, 8, SemanticInfo::FunctionUse) + << Use(57, 5, 9, SemanticInfo::TypeUse) + << Use(57, 28, 8, SemanticInfo::FunctionUse) + << Use(58, 5, 9, SemanticInfo::TypeUse) + << Use(58, 28, 8, SemanticInfo::FunctionUse) + << Use(59, 5, 9, SemanticInfo::TypeUse) + << Use(59, 28, 8, SemanticInfo::FunctionUse) + << Use(60, 5, 9, SemanticInfo::TypeUse) + << Use(60, 28, 8, SemanticInfo::FunctionUse) + << Use(61, 5, 9, SemanticInfo::TypeUse) + << Use(61, 28, 8, SemanticInfo::FunctionUse) + << Use(62, 5, 9, SemanticInfo::TypeUse) + << Use(62, 28, 8, SemanticInfo::FunctionUse) + << Use(63, 5, 9, SemanticInfo::TypeUse) + << Use(63, 28, 8, SemanticInfo::FunctionUse) + << Use(64, 5, 9, SemanticInfo::TypeUse) + << Use(64, 28, 8, SemanticInfo::FunctionUse) + << Use(65, 5, 9, SemanticInfo::TypeUse) + << Use(65, 28, 8, SemanticInfo::FunctionUse) + << Use(66, 5, 9, SemanticInfo::TypeUse) + << Use(66, 28, 8, SemanticInfo::FunctionUse) + << Use(67, 5, 9, SemanticInfo::TypeUse) + << Use(67, 28, 8, SemanticInfo::FunctionUse) + << Use(68, 5, 9, SemanticInfo::TypeUse) + << Use(68, 28, 8, SemanticInfo::FunctionUse) + << Use(69, 5, 9, SemanticInfo::TypeUse) + << Use(69, 28, 8, SemanticInfo::FunctionUse) + << Use(70, 5, 9, SemanticInfo::TypeUse) + << Use(70, 28, 8, SemanticInfo::FunctionUse) + << Use(71, 5, 9, SemanticInfo::TypeUse) + << Use(71, 28, 8, SemanticInfo::FunctionUse) + << Use(72, 5, 9, SemanticInfo::TypeUse) + << Use(72, 28, 8, SemanticInfo::FunctionUse) + << Use(73, 5, 9, SemanticInfo::TypeUse) + << Use(73, 28, 8, SemanticInfo::FunctionUse) + << Use(74, 5, 9, SemanticInfo::TypeUse) + << Use(74, 28, 8, SemanticInfo::FunctionUse) + << Use(75, 5, 9, SemanticInfo::TypeUse) + << Use(75, 28, 8, SemanticInfo::FunctionUse) + << Use(76, 5, 9, SemanticInfo::TypeUse) + << Use(76, 28, 8, SemanticInfo::FunctionUse) + << Use(77, 5, 9, SemanticInfo::TypeUse) + << Use(77, 28, 8, SemanticInfo::FunctionUse) + << Use(78, 5, 9, SemanticInfo::TypeUse) + << Use(78, 28, 8, SemanticInfo::FunctionUse) + << Use(79, 5, 9, SemanticInfo::TypeUse) + << Use(79, 28, 8, SemanticInfo::FunctionUse) + << Use(80, 5, 9, SemanticInfo::TypeUse) + << Use(80, 28, 8, SemanticInfo::FunctionUse) + << Use(81, 5, 9, SemanticInfo::TypeUse) + << Use(81, 28, 8, SemanticInfo::FunctionUse) + << Use(82, 5, 9, SemanticInfo::TypeUse) + << Use(82, 28, 8, SemanticInfo::FunctionUse) + << Use(83, 5, 9, SemanticInfo::TypeUse) + << Use(83, 28, 8, SemanticInfo::FunctionUse) + << Use(84, 5, 9, SemanticInfo::TypeUse) + << Use(84, 28, 8, SemanticInfo::FunctionUse) + << Use(85, 5, 9, SemanticInfo::TypeUse) + << Use(85, 28, 8, SemanticInfo::FunctionUse) + << Use(86, 5, 9, SemanticInfo::TypeUse) + << Use(86, 28, 8, SemanticInfo::FunctionUse) + << Use(87, 5, 9, SemanticInfo::TypeUse) + << Use(87, 28, 8, SemanticInfo::FunctionUse) + << Use(88, 5, 9, SemanticInfo::TypeUse) + << Use(88, 28, 8, SemanticInfo::FunctionUse) + << Use(89, 5, 9, SemanticInfo::TypeUse) + << Use(89, 28, 8, SemanticInfo::FunctionUse) + << Use(90, 5, 9, SemanticInfo::TypeUse) + << Use(90, 28, 8, SemanticInfo::FunctionUse) + << Use(91, 5, 9, SemanticInfo::TypeUse) + << Use(91, 28, 8, SemanticInfo::FunctionUse) + << Use(92, 5, 9, SemanticInfo::TypeUse) + << Use(92, 28, 8, SemanticInfo::FunctionUse) + << Use(93, 5, 9, SemanticInfo::TypeUse) + << Use(93, 28, 8, SemanticInfo::FunctionUse) + << Use(94, 5, 9, SemanticInfo::TypeUse) + << Use(94, 28, 8, SemanticInfo::FunctionUse) + << Use(95, 5, 9, SemanticInfo::TypeUse) + << Use(95, 28, 8, SemanticInfo::FunctionUse) + << Use(96, 5, 9, SemanticInfo::TypeUse) + << Use(96, 28, 8, SemanticInfo::FunctionUse) + << Use(97, 5, 9, SemanticInfo::TypeUse) + << Use(97, 28, 8, SemanticInfo::FunctionUse) + << Use(98, 5, 9, SemanticInfo::TypeUse) + << Use(98, 28, 8, SemanticInfo::FunctionUse) + << Use(99, 5, 9, SemanticInfo::TypeUse) + << Use(99, 28, 8, SemanticInfo::FunctionUse) + << Use(100, 5, 9, SemanticInfo::TypeUse) + << Use(100, 28, 8, SemanticInfo::FunctionUse) + << Use(101, 5, 9, SemanticInfo::TypeUse) + << Use(101, 28, 8, SemanticInfo::FunctionUse) + << Use(102, 5, 9, SemanticInfo::TypeUse) + << Use(102, 28, 8, SemanticInfo::FunctionUse) + << Use(103, 5, 9, SemanticInfo::TypeUse) + << Use(103, 28, 8, SemanticInfo::FunctionUse) + << Use(104, 5, 9, SemanticInfo::TypeUse) + << Use(104, 28, 8, SemanticInfo::FunctionUse) + << Use(105, 5, 9, SemanticInfo::TypeUse) + << Use(105, 28, 8, SemanticInfo::FunctionUse) + << Use(106, 5, 9, SemanticInfo::TypeUse) + << Use(106, 28, 8, SemanticInfo::FunctionUse) + << Use(107, 5, 9, SemanticInfo::TypeUse) + << Use(107, 28, 8, SemanticInfo::FunctionUse) + << Use(108, 5, 9, SemanticInfo::TypeUse) + << Use(108, 28, 8, SemanticInfo::FunctionUse) + << Use(109, 5, 9, SemanticInfo::TypeUse) + << Use(109, 28, 8, SemanticInfo::FunctionUse) + << Use(110, 5, 9, SemanticInfo::TypeUse) + << Use(110, 28, 8, SemanticInfo::FunctionUse) + << Use(111, 5, 9, SemanticInfo::TypeUse) + << Use(111, 28, 8, SemanticInfo::FunctionUse) + << Use(112, 5, 9, SemanticInfo::TypeUse) + << Use(112, 28, 8, SemanticInfo::FunctionUse) + << Use(113, 5, 9, SemanticInfo::TypeUse) + << Use(113, 28, 8, SemanticInfo::FunctionUse) + << Use(114, 5, 9, SemanticInfo::TypeUse) + << Use(114, 28, 8, SemanticInfo::FunctionUse) + << Use(115, 5, 9, SemanticInfo::TypeUse) + << Use(115, 28, 8, SemanticInfo::FunctionUse) + << Use(116, 5, 9, SemanticInfo::TypeUse) + << Use(116, 28, 8, SemanticInfo::FunctionUse) + << Use(117, 5, 9, SemanticInfo::TypeUse) + << Use(117, 28, 8, SemanticInfo::FunctionUse) + << Use(118, 5, 9, SemanticInfo::TypeUse) + << Use(118, 28, 8, SemanticInfo::FunctionUse) + << Use(119, 5, 9, SemanticInfo::TypeUse) + << Use(119, 28, 8, SemanticInfo::FunctionUse) + << Use(120, 5, 9, SemanticInfo::TypeUse) + << Use(120, 28, 8, SemanticInfo::FunctionUse) + << Use(121, 5, 9, SemanticInfo::TypeUse) + << Use(121, 28, 8, SemanticInfo::FunctionUse) + << Use(122, 5, 9, SemanticInfo::TypeUse) + << Use(122, 28, 8, SemanticInfo::FunctionUse) + << Use(123, 5, 9, SemanticInfo::TypeUse) + << Use(123, 28, 8, SemanticInfo::FunctionUse) + << Use(124, 5, 9, SemanticInfo::TypeUse) + << Use(124, 28, 8, SemanticInfo::FunctionUse) + << Use(125, 5, 9, SemanticInfo::TypeUse) + << Use(125, 28, 8, SemanticInfo::FunctionUse) + << Use(126, 5, 9, SemanticInfo::TypeUse) + << Use(126, 28, 8, SemanticInfo::FunctionUse) + << Use(127, 5, 9, SemanticInfo::TypeUse) + << Use(127, 28, 8, SemanticInfo::FunctionUse) + << Use(128, 5, 9, SemanticInfo::TypeUse) + << Use(128, 28, 8, SemanticInfo::FunctionUse) + << Use(129, 5, 9, SemanticInfo::TypeUse) + << Use(129, 28, 8, SemanticInfo::FunctionUse) + << Use(130, 5, 9, SemanticInfo::TypeUse) + << Use(130, 28, 8, SemanticInfo::FunctionUse) + << Use(131, 5, 9, SemanticInfo::TypeUse) + << Use(131, 28, 8, SemanticInfo::FunctionUse) + << Use(132, 5, 9, SemanticInfo::TypeUse) + << Use(132, 28, 8, SemanticInfo::FunctionUse) + << Use(133, 5, 9, SemanticInfo::TypeUse) + << Use(133, 28, 8, SemanticInfo::FunctionUse) + << Use(134, 5, 9, SemanticInfo::TypeUse) + << Use(134, 28, 8, SemanticInfo::FunctionUse) + << Use(135, 5, 9, SemanticInfo::TypeUse) + << Use(135, 28, 8, SemanticInfo::FunctionUse) + << Use(136, 5, 9, SemanticInfo::TypeUse) + << Use(136, 28, 8, SemanticInfo::FunctionUse) + << Use(137, 5, 9, SemanticInfo::TypeUse) + << Use(137, 28, 8, SemanticInfo::FunctionUse) + << Use(138, 5, 9, SemanticInfo::TypeUse) + << Use(138, 28, 8, SemanticInfo::FunctionUse) + << Use(139, 5, 9, SemanticInfo::TypeUse) + << Use(139, 28, 8, SemanticInfo::FunctionUse) + << Use(140, 5, 9, SemanticInfo::TypeUse) + << Use(140, 28, 8, SemanticInfo::FunctionUse) + << Use(141, 5, 9, SemanticInfo::TypeUse) + << Use(141, 28, 8, SemanticInfo::FunctionUse) + << Use(142, 5, 9, SemanticInfo::TypeUse) + << Use(142, 28, 8, SemanticInfo::FunctionUse) + << Use(143, 5, 9, SemanticInfo::TypeUse) + << Use(143, 28, 8, SemanticInfo::FunctionUse) + << Use(144, 5, 9, SemanticInfo::TypeUse) + << Use(144, 28, 8, SemanticInfo::FunctionUse) + << Use(145, 5, 9, SemanticInfo::TypeUse) + << Use(145, 28, 8, SemanticInfo::FunctionUse) + << Use(146, 5, 9, SemanticInfo::TypeUse) + << Use(146, 28, 8, SemanticInfo::FunctionUse) + << Use(147, 5, 9, SemanticInfo::TypeUse) + << Use(147, 28, 8, SemanticInfo::FunctionUse) + << Use(148, 5, 9, SemanticInfo::TypeUse) + << Use(148, 28, 8, SemanticInfo::FunctionUse) + << Use(149, 5, 9, SemanticInfo::TypeUse) + << Use(149, 28, 8, SemanticInfo::FunctionUse) + << Use(150, 5, 9, SemanticInfo::TypeUse) + << Use(150, 28, 8, SemanticInfo::FunctionUse) + << Use(151, 5, 9, SemanticInfo::TypeUse) + << Use(151, 28, 8, SemanticInfo::FunctionUse) + << Use(152, 5, 9, SemanticInfo::TypeUse) + << Use(152, 28, 8, SemanticInfo::FunctionUse) + << Use(153, 5, 9, SemanticInfo::TypeUse) + << Use(153, 28, 8, SemanticInfo::FunctionUse) + << Use(154, 5, 9, SemanticInfo::TypeUse) + << Use(154, 28, 8, SemanticInfo::FunctionUse) + << Use(155, 5, 9, SemanticInfo::TypeUse) + << Use(155, 28, 8, SemanticInfo::FunctionUse) + << Use(156, 5, 9, SemanticInfo::TypeUse) + << Use(156, 28, 8, SemanticInfo::FunctionUse) + << Use(157, 5, 9, SemanticInfo::TypeUse) + << Use(157, 28, 8, SemanticInfo::FunctionUse) + << Use(158, 5, 9, SemanticInfo::TypeUse) + << Use(158, 28, 8, SemanticInfo::FunctionUse) + << Use(159, 5, 9, SemanticInfo::TypeUse) + << Use(159, 28, 8, SemanticInfo::FunctionUse) + << Use(160, 5, 9, SemanticInfo::TypeUse) + << Use(160, 28, 8, SemanticInfo::FunctionUse) + << Use(161, 5, 9, SemanticInfo::TypeUse) + << Use(161, 28, 8, SemanticInfo::FunctionUse) + << Use(162, 5, 9, SemanticInfo::TypeUse) + << Use(162, 28, 8, SemanticInfo::FunctionUse) + << Use(163, 5, 9, SemanticInfo::TypeUse) + << Use(163, 28, 8, SemanticInfo::FunctionUse) + << Use(164, 5, 9, SemanticInfo::TypeUse) + << Use(164, 28, 8, SemanticInfo::FunctionUse) + << Use(165, 5, 9, SemanticInfo::TypeUse) + << Use(165, 28, 8, SemanticInfo::FunctionUse) + << Use(166, 5, 9, SemanticInfo::TypeUse) + << Use(166, 28, 8, SemanticInfo::FunctionUse) + << Use(167, 5, 9, SemanticInfo::TypeUse) + << Use(167, 28, 8, SemanticInfo::FunctionUse) + << Use(168, 5, 9, SemanticInfo::TypeUse) + << Use(168, 28, 8, SemanticInfo::FunctionUse) + << Use(169, 5, 9, SemanticInfo::TypeUse) + << Use(169, 28, 8, SemanticInfo::FunctionUse) + << Use(170, 5, 9, SemanticInfo::TypeUse) + << Use(170, 28, 8, SemanticInfo::FunctionUse) + << Use(171, 5, 9, SemanticInfo::TypeUse) + << Use(171, 28, 8, SemanticInfo::FunctionUse) + << Use(172, 5, 9, SemanticInfo::TypeUse) + << Use(172, 28, 8, SemanticInfo::FunctionUse) + << Use(173, 5, 9, SemanticInfo::TypeUse) + << Use(173, 28, 8, SemanticInfo::FunctionUse) + << Use(174, 5, 9, SemanticInfo::TypeUse) + << Use(174, 28, 8, SemanticInfo::FunctionUse) + << Use(175, 5, 9, SemanticInfo::TypeUse) + << Use(175, 28, 8, SemanticInfo::FunctionUse) + << Use(176, 5, 9, SemanticInfo::TypeUse) + << Use(176, 28, 8, SemanticInfo::FunctionUse) + << Use(177, 5, 9, SemanticInfo::TypeUse) + << Use(177, 28, 8, SemanticInfo::FunctionUse) + << Use(178, 5, 9, SemanticInfo::TypeUse) + << Use(178, 28, 8, SemanticInfo::FunctionUse) + << Use(179, 5, 9, SemanticInfo::TypeUse) + << Use(179, 28, 8, SemanticInfo::FunctionUse) + << Use(180, 5, 9, SemanticInfo::TypeUse) + << Use(180, 28, 8, SemanticInfo::FunctionUse) + << Use(181, 5, 9, SemanticInfo::TypeUse) + << Use(181, 28, 8, SemanticInfo::FunctionUse) + << Use(182, 5, 9, SemanticInfo::TypeUse) + << Use(182, 28, 8, SemanticInfo::FunctionUse) + << Use(183, 5, 9, SemanticInfo::TypeUse) + << Use(183, 28, 8, SemanticInfo::FunctionUse) + << Use(184, 5, 9, SemanticInfo::TypeUse) + << Use(184, 28, 8, SemanticInfo::FunctionUse) + << Use(185, 5, 9, SemanticInfo::TypeUse) + << Use(185, 28, 8, SemanticInfo::FunctionUse) + << Use(186, 5, 9, SemanticInfo::TypeUse) + << Use(186, 28, 8, SemanticInfo::FunctionUse) + << Use(187, 5, 9, SemanticInfo::TypeUse) + << Use(187, 28, 8, SemanticInfo::FunctionUse) + << Use(188, 5, 9, SemanticInfo::TypeUse) + << Use(188, 28, 8, SemanticInfo::FunctionUse) + << Use(189, 5, 9, SemanticInfo::TypeUse) + << Use(189, 28, 8, SemanticInfo::FunctionUse) + << Use(190, 5, 9, SemanticInfo::TypeUse) + << Use(190, 28, 8, SemanticInfo::FunctionUse) + << Use(191, 5, 9, SemanticInfo::TypeUse) + << Use(191, 28, 8, SemanticInfo::FunctionUse) + << Use(192, 5, 9, SemanticInfo::TypeUse) + << Use(192, 28, 8, SemanticInfo::FunctionUse) + << Use(193, 5, 9, SemanticInfo::TypeUse) + << Use(193, 28, 8, SemanticInfo::FunctionUse) + << Use(194, 5, 9, SemanticInfo::TypeUse) + << Use(194, 28, 8, SemanticInfo::FunctionUse) + << Use(195, 5, 9, SemanticInfo::TypeUse) + << Use(195, 28, 8, SemanticInfo::FunctionUse) + << Use(196, 5, 9, SemanticInfo::TypeUse) + << Use(196, 28, 8, SemanticInfo::FunctionUse) + << Use(197, 5, 9, SemanticInfo::TypeUse) + << Use(197, 28, 8, SemanticInfo::FunctionUse) + << Use(198, 5, 9, SemanticInfo::TypeUse) + << Use(198, 28, 8, SemanticInfo::FunctionUse) + << Use(199, 5, 9, SemanticInfo::TypeUse) + << Use(199, 28, 8, SemanticInfo::FunctionUse) + << Use(200, 5, 9, SemanticInfo::TypeUse) + << Use(200, 28, 8, SemanticInfo::FunctionUse) + << Use(201, 5, 9, SemanticInfo::TypeUse) + << Use(201, 28, 8, SemanticInfo::FunctionUse) + << Use(202, 5, 9, SemanticInfo::TypeUse) + << Use(202, 28, 8, SemanticInfo::FunctionUse) + << Use(203, 5, 9, SemanticInfo::TypeUse) + << Use(203, 28, 8, SemanticInfo::FunctionUse) + << Use(204, 5, 9, SemanticInfo::TypeUse) + << Use(204, 28, 8, SemanticInfo::FunctionUse) + << Use(205, 5, 9, SemanticInfo::TypeUse) + << Use(205, 28, 8, SemanticInfo::FunctionUse) + << Use(206, 5, 9, SemanticInfo::TypeUse) + << Use(206, 28, 8, SemanticInfo::FunctionUse) + << Use(207, 5, 9, SemanticInfo::TypeUse) + << Use(207, 28, 8, SemanticInfo::FunctionUse) + << Use(208, 5, 9, SemanticInfo::TypeUse) + << Use(208, 28, 8, SemanticInfo::FunctionUse) + << Use(209, 5, 9, SemanticInfo::TypeUse) + << Use(209, 28, 8, SemanticInfo::FunctionUse) + << Use(210, 5, 9, SemanticInfo::TypeUse) + << Use(210, 28, 8, SemanticInfo::FunctionUse) + << Use(211, 5, 9, SemanticInfo::TypeUse) + << Use(211, 28, 8, SemanticInfo::FunctionUse) + << Use(212, 5, 9, SemanticInfo::TypeUse) + << Use(212, 28, 8, SemanticInfo::FunctionUse) + << Use(213, 5, 9, SemanticInfo::TypeUse) + << Use(213, 28, 8, SemanticInfo::FunctionUse) + << Use(214, 5, 9, SemanticInfo::TypeUse) + << Use(214, 28, 8, SemanticInfo::FunctionUse) + << Use(215, 5, 9, SemanticInfo::TypeUse) + << Use(215, 28, 8, SemanticInfo::FunctionUse) + << Use(216, 5, 9, SemanticInfo::TypeUse) + << Use(216, 28, 8, SemanticInfo::FunctionUse) + << Use(217, 5, 9, SemanticInfo::TypeUse) + << Use(217, 28, 8, SemanticInfo::FunctionUse) + << Use(218, 5, 9, SemanticInfo::TypeUse) + << Use(218, 28, 8, SemanticInfo::FunctionUse) + << Use(219, 5, 9, SemanticInfo::TypeUse) + << Use(219, 28, 8, SemanticInfo::FunctionUse) + << Use(220, 5, 9, SemanticInfo::TypeUse) + << Use(220, 28, 8, SemanticInfo::FunctionUse) + << Use(221, 5, 9, SemanticInfo::TypeUse) + << Use(221, 28, 8, SemanticInfo::FunctionUse) + << Use(222, 5, 9, SemanticInfo::TypeUse) + << Use(222, 28, 8, SemanticInfo::FunctionUse) + << Use(223, 5, 9, SemanticInfo::TypeUse) + << Use(223, 28, 8, SemanticInfo::FunctionUse) + << Use(224, 5, 9, SemanticInfo::TypeUse) + << Use(224, 28, 8, SemanticInfo::FunctionUse) + << Use(225, 5, 9, SemanticInfo::TypeUse) + << Use(225, 28, 8, SemanticInfo::FunctionUse) + << Use(226, 5, 9, SemanticInfo::TypeUse) + << Use(226, 28, 8, SemanticInfo::FunctionUse) + << Use(227, 5, 9, SemanticInfo::TypeUse) + << Use(227, 28, 8, SemanticInfo::FunctionUse) + << Use(228, 5, 9, SemanticInfo::TypeUse) + << Use(228, 28, 8, SemanticInfo::FunctionUse) + << Use(229, 5, 9, SemanticInfo::TypeUse) + << Use(229, 28, 8, SemanticInfo::FunctionUse) + << Use(230, 5, 9, SemanticInfo::TypeUse) + << Use(230, 28, 8, SemanticInfo::FunctionUse) + << Use(231, 5, 9, SemanticInfo::TypeUse) + << Use(231, 28, 8, SemanticInfo::FunctionUse) + << Use(232, 5, 9, SemanticInfo::TypeUse) + << Use(232, 28, 8, SemanticInfo::FunctionUse) + << Use(233, 5, 9, SemanticInfo::TypeUse) + << Use(233, 28, 8, SemanticInfo::FunctionUse) + << Use(234, 5, 9, SemanticInfo::TypeUse) + << Use(234, 28, 8, SemanticInfo::FunctionUse) + << Use(235, 5, 9, SemanticInfo::TypeUse) + << Use(235, 28, 8, SemanticInfo::FunctionUse) + << Use(236, 5, 9, SemanticInfo::TypeUse) + << Use(236, 28, 8, SemanticInfo::FunctionUse) + << Use(237, 5, 9, SemanticInfo::TypeUse) + << Use(237, 28, 8, SemanticInfo::FunctionUse) + << Use(238, 5, 9, SemanticInfo::TypeUse) + << Use(238, 28, 8, SemanticInfo::FunctionUse) + << Use(239, 5, 9, SemanticInfo::TypeUse) + << Use(239, 28, 8, SemanticInfo::FunctionUse) + << Use(240, 5, 9, SemanticInfo::TypeUse) + << Use(240, 28, 8, SemanticInfo::FunctionUse) + << Use(241, 5, 9, SemanticInfo::TypeUse) + << Use(241, 28, 8, SemanticInfo::FunctionUse) + << Use(242, 5, 9, SemanticInfo::TypeUse) + << Use(242, 28, 8, SemanticInfo::FunctionUse) + << Use(243, 5, 9, SemanticInfo::TypeUse) + << Use(243, 28, 8, SemanticInfo::FunctionUse) + << Use(244, 5, 9, SemanticInfo::TypeUse) + << Use(244, 28, 8, SemanticInfo::FunctionUse) + << Use(245, 5, 9, SemanticInfo::TypeUse) + << Use(245, 28, 8, SemanticInfo::FunctionUse) + << Use(246, 5, 9, SemanticInfo::TypeUse) + << Use(246, 28, 8, SemanticInfo::FunctionUse) + << Use(247, 5, 9, SemanticInfo::TypeUse) + << Use(247, 28, 8, SemanticInfo::FunctionUse) + ; + + TestData::check(source, expectedUses); +} QTEST_APPLESS_MAIN(tst_CheckSymbols) #include "tst_checksymbols.moc"