From 35c1df5cb6da27be25a4d75ac811f0b4e3cbeb54 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Wed, 17 Jun 2015 20:16:32 +0000 Subject: [modules] Improve diagnostic for a template-id that's invalid because a default argument is not visible. llvm-svn: 239934 --- clang/test/Modules/submodules-merge-defs.cpp | 10 +++++++++- clang/test/Modules/template-default-args.cpp | 12 +++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'clang/test') diff --git a/clang/test/Modules/submodules-merge-defs.cpp b/clang/test/Modules/submodules-merge-defs.cpp index 0dd8680b5ff..a11ae46aefc 100644 --- a/clang/test/Modules/submodules-merge-defs.cpp +++ b/clang/test/Modules/submodules-merge-defs.cpp @@ -48,7 +48,15 @@ int pre_ff = F().f(); // expected-error +{{must be imported}} int pre_fg = F().g(); // expected-error +{{must be imported}} // expected-note@defs.h:26 +{{here}} -J<> pre_j; // expected-error {{must be imported}} expected-error {{too few}} +J<> pre_j; // expected-error {{declaration of 'J' must be imported}} +#ifdef IMPORT_USE_2 +// FIXME-error-re@-2 {{default argument of 'J' must be imported from one of {{.*}}stuff.use{{.*}}stuff.use-2}} +// expected-error@-3 {{default argument of 'J' must be imported from module 'stuff.use'}} +#elif EARLY_INDIRECT_INCLUDE +// expected-error@-5 {{default argument of 'J' must be imported from module 'merged-defs'}} +#else +// expected-error@-7 {{default argument of 'J' must be imported from module 'stuff.use'}} +#endif // expected-note@defs.h:49 +{{here}} // Make definitions from second module visible. diff --git a/clang/test/Modules/template-default-args.cpp b/clang/test/Modules/template-default-args.cpp index b25b8f6eca0..9b2865421f2 100644 --- a/clang/test/Modules/template-default-args.cpp +++ b/clang/test/Modules/template-default-args.cpp @@ -1,12 +1,12 @@ // RUN: rm -rf %t -// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -I %S/Inputs/template-default-args -std=c++11 %s +// RUN: %clang_cc1 -fmodules -fimplicit-module-maps -verify -fmodules-cache-path=%t -fno-modules-error-recovery -I %S/Inputs/template-default-args -std=c++11 %s template struct A; template struct B; template struct C; template struct D; template struct E {}; -template struct H {}; // expected-note {{here}} +template struct H {}; #include "b.h" @@ -16,7 +16,7 @@ template struct B; template struct C; template struct D {}; template struct F {}; -template struct G {}; // expected-note {{here}} +template struct G {}; #include "c.h" @@ -26,5 +26,7 @@ extern C<> c; D<> d; E<> e; F<> f; -G<> g; // expected-error {{too few}} -H<> h; // expected-error {{too few}} +G<> g; // expected-error {{default argument of 'G' must be imported from module 'X.A' before it is required}} +// expected-note@a.h:6 {{default argument declared here}} +H<> h; // expected-error {{default argument of 'H' must be imported from module 'X.A' before it is required}} +// expected-note@a.h:7 {{default argument declared here}} -- cgit v1.2.3