forked from qt-creator/qt-creator
C++: fix member rewriting when doing template instantiation.
Task-number: QTCREATORBUG-7964 Change-Id: Icc7d87bb4f2d1ab0560a6c06187d9c23da9fe3e9 Reviewed-by: David Schulz <david.schulz@digia.com>
This commit is contained in:
@@ -228,6 +228,78 @@ void CppToolsPlugin::test_completion_template_1()
|
||||
QVERIFY(!completions.contains("func"));
|
||||
}
|
||||
|
||||
void CppToolsPlugin::test_completion_template_2()
|
||||
{
|
||||
TestData data;
|
||||
data.srcText = "\n"
|
||||
"template <class T>\n"
|
||||
"struct List\n"
|
||||
"{\n"
|
||||
" T &at(int);\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"struct Tupple { int a; int b; };\n"
|
||||
"\n"
|
||||
"void func() {\n"
|
||||
" List<Tupple> l;\n"
|
||||
" @\n"
|
||||
" // padding so we get the scope right\n"
|
||||
"}";
|
||||
|
||||
setup(&data);
|
||||
|
||||
Utils::ChangeSet change;
|
||||
QString txt = QLatin1String("l.at(0).");
|
||||
change.insert(data.pos, txt);
|
||||
QTextCursor cursor(data.doc);
|
||||
change.apply(&cursor);
|
||||
data.pos += txt.length();
|
||||
|
||||
QStringList completions = getCompletions(data);
|
||||
|
||||
QCOMPARE(completions.size(), 3);
|
||||
QVERIFY(completions.contains("Tupple"));
|
||||
QVERIFY(completions.contains("a"));
|
||||
QVERIFY(completions.contains("b"));
|
||||
}
|
||||
|
||||
void CppToolsPlugin::test_completion_template_3()
|
||||
{
|
||||
TestData data;
|
||||
data.srcText = "\n"
|
||||
"template <class T>\n"
|
||||
"struct List\n"
|
||||
"{\n"
|
||||
" T t;\n"
|
||||
"};\n"
|
||||
"\n"
|
||||
"struct Tupple { int a; int b; };\n"
|
||||
"\n"
|
||||
"void func() {\n"
|
||||
" List<Tupple> l;\n"
|
||||
" @\n"
|
||||
" // padding so we get the scope right\n"
|
||||
"}";
|
||||
|
||||
setup(&data);
|
||||
|
||||
Utils::ChangeSet change;
|
||||
QString txt = QLatin1String("l.t.");
|
||||
change.insert(data.pos, txt);
|
||||
QTextCursor cursor(data.doc);
|
||||
change.apply(&cursor);
|
||||
data.pos += txt.length();
|
||||
|
||||
QStringList completions = getCompletions(data);
|
||||
|
||||
QCOMPARE(completions.size(), 3);
|
||||
QVERIFY(completions.contains("Tupple"));
|
||||
QVERIFY(completions.contains("a"));
|
||||
QVERIFY(completions.contains("b"));
|
||||
QVERIFY(completions.contains("a"));
|
||||
QVERIFY(completions.contains("b"));
|
||||
}
|
||||
|
||||
void CppToolsPlugin::test_completion()
|
||||
{
|
||||
QFETCH(QByteArray, code);
|
||||
|
||||
Reference in New Issue
Block a user