balazske created this revision.
Herald added subscribers: cfe-commits, martong.
Herald added a reviewer: a.sidorin.
Herald added a reviewer: a.sidorin.
When running the ASTTests test, warnings produced by the compiler can be
distracting when looking for test errors. A part of the warnings is removed
by setting extra compiler options.
Repository:
rC Clang
https://reviews.llvm.org/D47459
Files:
unittests/AST/ASTImporterTest.cpp
Index: unittests/AST/ASTImporterTest.cpp
===================================================================
--- unittests/AST/ASTImporterTest.cpp
+++ unittests/AST/ASTImporterTest.cpp
@@ -151,6 +151,25 @@
Verifier, AMatcher));
}
+template<typename NodeType, typename MatcherType>
+void testImport(const std::string &FromCode,
+ Language FromLang, const ArgVector &FromArgsExtra,
+ const std::string &ToCode,
+ Language ToLang, const ArgVector &ToArgsExtra,
+ MatchVerifier<NodeType> &Verifier,
+ const MatcherType &AMatcher) {
+ auto RunOptsFrom = getRunOptionsForLanguage(FromLang);
+ auto RunOptsTo = getRunOptionsForLanguage(ToLang);
+ for (auto FromArgs : RunOptsFrom) {
+ for (auto ToArgs : RunOptsTo) {
+ FromArgs.insert(FromArgs.end(), FromArgsExtra.begin(), FromArgsExtra.end());
+ ToArgs.insert(ToArgs.end(), ToArgsExtra.begin(), ToArgsExtra.end());
+ EXPECT_TRUE(testImport(FromCode, FromArgs, ToCode, ToArgs,
+ Verifier, AMatcher));
+ }
+ }
+}
+
// This class provides generic methods to write tests which can check internal
// attributes of AST nodes like getPreviousDecl(), isVirtual(), etc. Also,
// this fixture makes it possible to import from several "From" contexts.
@@ -428,25 +447,25 @@
TEST(ImportExpr, ImportStringLiteral) {
MatchVerifier<Decl> Verifier;
testImport("void declToImport() { \"foo\"; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
has(
stringLiteral(
hasType(
asString("const char [4]"))))))));
testImport("void declToImport() { L\"foo\"; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
has(
stringLiteral(
hasType(
asString("const wchar_t [4]"))))))));
testImport("void declToImport() { \"foo\" \"bar\"; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -459,7 +478,7 @@
TEST(ImportExpr, ImportGNUNullExpr) {
MatchVerifier<Decl> Verifier;
testImport("void declToImport() { __null; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -471,7 +490,7 @@
TEST(ImportExpr, ImportCXXNullPtrLiteralExpr) {
MatchVerifier<Decl> Verifier;
testImport("void declToImport() { nullptr; }",
- Lang_CXX11, "", Lang_CXX11, Verifier,
+ Lang_CXX11, { "-Wno-unused-value" }, "", Lang_CXX11, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -483,16 +502,16 @@
TEST(ImportExpr, ImportFloatinglLiteralExpr) {
MatchVerifier<Decl> Verifier;
testImport("void declToImport() { 1.0; }",
- Lang_C, "", Lang_C, Verifier,
+ Lang_C, { "-Wno-unused-value" }, "", Lang_C, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
has(
floatLiteral(
equals(1.0),
hasType(asString("double"))))))));
testImport("void declToImport() { 1.0e-5f; }",
- Lang_C, "", Lang_C, Verifier,
+ Lang_C, { "-Wno-unused-value" }, "", Lang_C, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -507,7 +526,7 @@
testImport("void declToImport() {"
" struct s { int x; long y; unsigned z; }; "
" (struct s){ 42, 0L, 1U }; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -529,7 +548,7 @@
TEST(ImportExpr, ImportCXXThisExpr) {
MatchVerifier<Decl> Verifier;
testImport("class declToImport { void f() { this; } };",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
cxxRecordDecl(
hasMethod(
hasBody(
@@ -554,7 +573,8 @@
TEST(ImportExpr, ImportLabelDeclAndAddrLabelExpr) {
MatchVerifier<Decl> Verifier;
testImport(
- "void declToImport() { loop: goto loop; &&loop; }", Lang_C, "", Lang_C,
+ "void declToImport() { loop: goto loop; &&loop; }",
+ Lang_C, { "-Wno-unused-value" }, "", Lang_C, {},
Verifier,
functionDecl(hasBody(compoundStmt(
has(labelStmt(hasDeclaration(labelDecl(hasName("loop"))))),
@@ -626,7 +646,7 @@
MatchVerifier<Decl> Verifier;
testImport(
"void declToImport() { true ? 1 : -5; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -642,7 +662,8 @@
TEST(ImportExpr, ImportBinaryConditionalOperator) {
MatchVerifier<Decl> Verifier;
testImport(
- "void declToImport() { 1 ?: -5; }", Lang_CXX, "", Lang_CXX, Verifier,
+ "void declToImport() { 1 ?: -5; }",
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -710,7 +731,7 @@
MatchVerifier<Decl> Verifier;
// __func__ expands as StringLiteral("declToImport")
testImport("void declToImport() { __func__; }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -817,16 +838,16 @@
" d.t;"
"}"
"void instantiate() { declToImport<int>(); }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionTemplateDecl(has(functionDecl(
has(compoundStmt(has(cxxDependentScopeMemberExpr())))))));
testImport("template <typename T> struct C { T t; };"
"template <typename T> void declToImport() {"
" C<T> d;"
" (&d)->t;"
"}"
"void instantiate() { declToImport<int>(); }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionTemplateDecl(has(functionDecl(
has(compoundStmt(has(cxxDependentScopeMemberExpr())))))));
}
@@ -854,7 +875,7 @@
"template <typename T>"
"T pi = T(3.1415926535897932385L);"
"void declToImport() { pi<int>; }",
- Lang_CXX11, "", Lang_CXX11, Verifier,
+ Lang_CXX14, { "-Wno-unused-value" }, "", Lang_CXX14, {}, Verifier,
functionDecl(
hasBody(has(declRefExpr(to(varTemplateSpecializationDecl())))),
unless(hasAncestor(translationUnitDecl(has(varDecl(
@@ -939,7 +960,7 @@
testImport("void declToImport() { "
" __builtin_types_compatible_p(int, int);"
"}",
- Lang_C, "", Lang_C, Verifier,
+ Lang_C, { "-Wno-unused-value" }, "", Lang_C, {}, Verifier,
functionDecl(
hasBody(
compoundStmt(
@@ -971,7 +992,7 @@
" void m() { __is_pod(T); }"
"};"
"void f() { declToImport<int>().m(); }",
- Lang_CXX11, "", Lang_CXX11, Verifier,
+ Lang_CXX11, { "-Wno-unused-value" }, "", Lang_CXX11, {}, Verifier,
classTemplateDecl(
has(
cxxRecordDecl(
@@ -1043,7 +1064,7 @@
" ::template foo<T>;"
"}"
"void instantiate() { declToImport<int>(); }",
- Lang_CXX, "", Lang_CXX, Verifier,
+ Lang_CXX, { "-Wno-unused-value" }, "", Lang_CXX, {}, Verifier,
functionTemplateDecl(has(functionDecl(
has(compoundStmt(has(unresolvedLookupExpr())))))));
}
@@ -1851,7 +1872,10 @@
" (void) S<T>::foo;"
"}"
"void instantiate() { declToImport<int>(); }",
- Lang_CXX11, "", Lang_CXX11, Verifier,
+ Lang_CXX11, { "-Wno-undefined-var-template" },
+ "",
+ Lang_CXX11, {},
+ Verifier,
functionTemplateDecl(has(functionDecl(has(compoundStmt(
has(cStyleCastExpr(has(dependentScopeDeclRefExpr())))))))));
@@ -1862,7 +1886,10 @@
" S<T>::template foo<T>();"
"}"
"void instantiate() { declToImport<int>(); }",
- Lang_CXX11, "", Lang_CXX11, Verifier,
+ Lang_CXX11, { "-Wno-undefined-var-template" },
+ "",
+ Lang_CXX11, {},
+ Verifier,
functionTemplateDecl(has(functionDecl(has(compoundStmt(
has(callExpr(has(dependentScopeDeclRefExpr())))))))));
}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits