diff options
author | Reid Kleckner <rnk@google.com> | 2018-11-27 21:20:42 +0000 |
---|---|---|
committer | Reid Kleckner <rnk@google.com> | 2018-11-27 21:20:42 +0000 |
commit | 229eee49fc2539f2aceac3073597e6029a3fb390 (patch) | |
tree | 5f4f889f7c77002454b04a0c91cb76ac8a38e33e /clang/test/Parser/DelayedTemplateParsing.cpp | |
parent | 6052d09c05f7aeec8e70ee12728753bb5823ebcc (diff) | |
download | bcm5719-llvm-229eee49fc2539f2aceac3073597e6029a3fb390.tar.gz bcm5719-llvm-229eee49fc2539f2aceac3073597e6029a3fb390.zip |
[MS] Push outermost class DeclContexts only in -fdelayed-template-parsing
This is more or less a complete rewrite of r347627, and it fixes PR38460
I added a reduced test case to DelayedTemplateParsing.cpp.
llvm-svn: 347713
Diffstat (limited to 'clang/test/Parser/DelayedTemplateParsing.cpp')
-rw-r--r-- | clang/test/Parser/DelayedTemplateParsing.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/clang/test/Parser/DelayedTemplateParsing.cpp b/clang/test/Parser/DelayedTemplateParsing.cpp index 6ea245c2d4e..c65e80b1f73 100644 --- a/clang/test/Parser/DelayedTemplateParsing.cpp +++ b/clang/test/Parser/DelayedTemplateParsing.cpp @@ -181,3 +181,33 @@ static void h() { } } + +struct PR38460 { + template <typename> + struct T { + static void foo() { + struct U { + void dummy() { + use_delayed_identifier(); + } + }; + } + }; +}; +void use_delayed_identifier(); +void trigger_PR38460() { + PR38460::T<int>::foo(); +} + +template <typename> struct PR38460_2 { + struct p { + struct G { + bool operator()(int) {} + }; + }; + static void as() { + typename p::G g; + g(0); + } +}; +template struct PR38460_2<int>; |