diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Modules/Inputs/update-exception-spec/a.h | 2 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/update-exception-spec/b.h | 3 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/update-exception-spec/c.h | 3 | ||||
-rw-r--r-- | clang/test/Modules/Inputs/update-exception-spec/module.modulemap | 3 | ||||
-rw-r--r-- | clang/test/Modules/cxx-templates.cpp | 10 | ||||
-rw-r--r-- | clang/test/Modules/linkage-merge.cpp | 5 | ||||
-rw-r--r-- | clang/test/Modules/odr.cpp | 8 | ||||
-rw-r--r-- | clang/test/Modules/redecl-add-after-load.cpp | 4 | ||||
-rw-r--r-- | clang/test/Modules/update-exception-spec.cpp | 6 |
9 files changed, 30 insertions, 14 deletions
diff --git a/clang/test/Modules/Inputs/update-exception-spec/a.h b/clang/test/Modules/Inputs/update-exception-spec/a.h new file mode 100644 index 00000000000..078ebf9aecf --- /dev/null +++ b/clang/test/Modules/Inputs/update-exception-spec/a.h @@ -0,0 +1,2 @@ +struct A { ~A() throw(int); }; +struct B { A a; }; diff --git a/clang/test/Modules/Inputs/update-exception-spec/b.h b/clang/test/Modules/Inputs/update-exception-spec/b.h new file mode 100644 index 00000000000..f75b559bee4 --- /dev/null +++ b/clang/test/Modules/Inputs/update-exception-spec/b.h @@ -0,0 +1,3 @@ +struct A { ~A() throw(int); }; +struct B { A a; }; +inline void f(B *p) { p->~B(); } diff --git a/clang/test/Modules/Inputs/update-exception-spec/c.h b/clang/test/Modules/Inputs/update-exception-spec/c.h new file mode 100644 index 00000000000..067dbb65055 --- /dev/null +++ b/clang/test/Modules/Inputs/update-exception-spec/c.h @@ -0,0 +1,3 @@ +#include "a.h" +#include "b.h" +inline void g(B *p) { p->~B(); } diff --git a/clang/test/Modules/Inputs/update-exception-spec/module.modulemap b/clang/test/Modules/Inputs/update-exception-spec/module.modulemap new file mode 100644 index 00000000000..880ae38b97a --- /dev/null +++ b/clang/test/Modules/Inputs/update-exception-spec/module.modulemap @@ -0,0 +1,3 @@ +module a { header "a.h" } +module b { header "b.h" } +module c { header "c.h" } diff --git a/clang/test/Modules/cxx-templates.cpp b/clang/test/Modules/cxx-templates.cpp index 46c2f33ef15..41b0f2cd92d 100644 --- a/clang/test/Modules/cxx-templates.cpp +++ b/clang/test/Modules/cxx-templates.cpp @@ -1,7 +1,7 @@ // RUN: rm -rf %t // RUN: not %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -std=c++11 -ast-dump-lookups | FileCheck %s --check-prefix=CHECK-GLOBAL // RUN: not %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -std=c++11 -ast-dump-lookups -ast-dump-filter N | FileCheck %s --check-prefix=CHECK-NAMESPACE-N -// RUN: not %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -std=c++11 -ast-dump | FileCheck %s --check-prefix=CHECK-DUMP +// RUN: not %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -std=c++11 -ast-dump -ast-dump-filter SomeTemplate | FileCheck %s --check-prefix=CHECK-DUMP // RUN: %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -verify -std=c++11 // RUN: %clang_cc1 -x objective-c++ -fmodules -fno-modules-error-recovery -fmodules-cache-path=%t -I %S/Inputs %s -verify -std=c++11 -DEARLY_IMPORT @@ -125,9 +125,10 @@ void g() { static_assert(Outer<int>::Inner<int>::f() == 1, ""); static_assert(Outer<int>::Inner<int>::g() == 2, ""); -#ifndef EARLY_IMPORT -// FIXME: The textual inclusion above shouldn't cause this to fail! -static_assert(MergeTemplateDefinitions<int>::f() == 1, ""); +// FIXME: We're too lazy in merging class definitions to find the definition +// of this function. +static_assert(MergeTemplateDefinitions<int>::f() == 1, ""); // expected-error {{constant expression}} expected-note {{undefined}} +// expected-note@cxx-templates-c.h:10 {{here}} static_assert(MergeTemplateDefinitions<int>::g() == 2, ""); RedeclaredAsFriend<int> raf1; @@ -140,7 +141,6 @@ MergeSpecializations<int[]>::partially_specialized_in_c spec_in_c_1; MergeSpecializations<char>::explicitly_specialized_in_a spec_in_a_2; MergeSpecializations<double>::explicitly_specialized_in_b spec_in_b_2; MergeSpecializations<bool>::explicitly_specialized_in_c spec_in_c_2; -#endif MergeAnonUnionMember<> maum_main; typedef DontWalkPreviousDeclAfterMerging<int> dwpdam_typedef_2; diff --git a/clang/test/Modules/linkage-merge.cpp b/clang/test/Modules/linkage-merge.cpp index 99917897fcc..3ac8053761b 100644 --- a/clang/test/Modules/linkage-merge.cpp +++ b/clang/test/Modules/linkage-merge.cpp @@ -11,6 +11,5 @@ static void g(int); // happen to find lookup results for 'g'; LookupResult::resolveKind needs to // be taught to prefer a visible result over a non-visible one. // -// FIXME-error@-1 {{functions that differ only in their return type cannot be overloaded}} -// FIXME-note@Inputs/linkage-merge-foo.h:2 {{previous declaration is here}} -// expected-no-diagnostics +// expected-error@9 {{functions that differ only in their return type cannot be overloaded}} +// expected-note@Inputs/linkage-merge-foo.h:2 {{previous declaration is here}} diff --git a/clang/test/Modules/odr.cpp b/clang/test/Modules/odr.cpp index 120ca20e0a8..4ac257cd03a 100644 --- a/clang/test/Modules/odr.cpp +++ b/clang/test/Modules/odr.cpp @@ -15,9 +15,9 @@ bool b = F<int>{0} == F<int>{1}; int x = f() + g(); // expected-note@a.h:5 {{definition has no member 'e2'}} -// expected-note@a.h:3 {{declaration of 'f' does not match}} -// expected-note@a.h:1 {{definition has no member 'm'}} +// expected-note@b.h:3 {{declaration of 'f' does not match}} +// expected-note@b.h:1 {{definition has no member 'n'}} // expected-error@b.h:5 {{'E::e2' from module 'b' is not present in definition of 'E' in module 'a'}} -// expected-error@b.h:3 {{'Y::f' from module 'b' is not present in definition of 'Y' in module 'a'}} -// expected-error@b.h:2 {{'Y::m' from module 'b' is not present in definition of 'Y' in module 'a'}} +// expected-error@a.h:3 {{'Y::f' from module 'a' is not present in definition of 'Y' in module 'b'}} +// expected-error@a.h:2 {{'Y::n' from module 'a' is not present in definition of 'Y' in module 'b'}} diff --git a/clang/test/Modules/redecl-add-after-load.cpp b/clang/test/Modules/redecl-add-after-load.cpp index 68deaf8b4ef..53e54c84cc3 100644 --- a/clang/test/Modules/redecl-add-after-load.cpp +++ b/clang/test/Modules/redecl-add-after-load.cpp @@ -29,7 +29,7 @@ struct D { static constexpr int function(); // expected-note {{here}} }; typedef D::A DB; -constexpr int D_test(bool b) { return b ? D::variable : D::function(); } // expected-note {{subexpression}} expected-note {{undefined}} +constexpr int D_test(bool b) { return b ? D::variable : D::function(); } // expected-note {{undefined}} #endif @import redecl_add_after_load; @@ -54,6 +54,6 @@ constexpr int merged_struct_variable_test = D_test(true); constexpr int merged_struct_function_test = D_test(false); #ifndef IMPORT_DECLS // expected-error@-4 {{incomplete}} -// expected-error@-4 {{constant}} expected-note@-4 {{in call to}} +// @-4: definition of D::variable must be emitted, so it gets imported eagerly // expected-error@-4 {{constant}} expected-note@-4 {{in call to}} #endif diff --git a/clang/test/Modules/update-exception-spec.cpp b/clang/test/Modules/update-exception-spec.cpp new file mode 100644 index 00000000000..bccdddc9c09 --- /dev/null +++ b/clang/test/Modules/update-exception-spec.cpp @@ -0,0 +1,6 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -fexceptions -fcxx-exceptions -fmodules -fmodules-cache-path=%t -I%S/Inputs/update-exception-spec -emit-llvm-only %s +#include "a.h" +void use(B *p); +#include "c.h" +void use(B *p) { g(p); } |