diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2016-07-27 18:25:10 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2016-07-27 18:25:10 +0000 |
commit | 3cdc317342d8c2b36de2839ea6ebefec17cb271e (patch) | |
tree | 80af2df7e2181aa85aa6ea80eb0f48d1e728ecf9 /clang/test/SemaCXX/lambda-expressions.cpp | |
parent | e921088c71cdc90dc31acc88d4e413706a5d9a42 (diff) | |
download | bcm5719-llvm-3cdc317342d8c2b36de2839ea6ebefec17cb271e.tar.gz bcm5719-llvm-3cdc317342d8c2b36de2839ea6ebefec17cb271e.zip |
[Sema] Teach getCurrentThisType to reconize lambda in in-class initializer
Fixes PR27994, a crash on valid.
Differential revision: https://reviews.llvm.org/D21145
llvm-svn: 276900
Diffstat (limited to 'clang/test/SemaCXX/lambda-expressions.cpp')
-rw-r--r-- | clang/test/SemaCXX/lambda-expressions.cpp | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/clang/test/SemaCXX/lambda-expressions.cpp b/clang/test/SemaCXX/lambda-expressions.cpp index 17808cef363..5fffe411178 100644 --- a/clang/test/SemaCXX/lambda-expressions.cpp +++ b/clang/test/SemaCXX/lambda-expressions.cpp @@ -1,5 +1,4 @@ -// RUN: %clang_cc1 -std=c++11 -Wno-unused-value -fsyntax-only -verify -fblocks %s -// RUN: %clang_cc1 -std=c++1y -Wno-unused-value -fsyntax-only -verify -fblocks %s +// RUN: %clang_cc1 -std=c++14 -Wno-unused-value -fsyntax-only -verify -fblocks %s namespace std { class type_info; }; @@ -499,3 +498,30 @@ void foo() { }; } } + +namespace PR27994 { +struct A { template <class T> A(T); }; + +template <class T> +struct B { + int x; + A a = [&] { int y = x; }; + A b = [&] { [&] { [&] { int y = x; }; }; }; + A d = [&](auto param) { int y = x; }; + A e = [&](auto param) { [&] { [&](auto param2) { int y = x; }; }; }; +}; + +B<int> b; + +template <class T> struct C { + struct D { + int x; + A f = [&] { int y = x; }; + }; +}; + +int func() { + C<int> a; + decltype(a)::D b; +} +} |