diff options
author | Serge Pavlov <sepavloff@gmail.com> | 2016-06-14 02:55:56 +0000 |
---|---|---|
committer | Serge Pavlov <sepavloff@gmail.com> | 2016-06-14 02:55:56 +0000 |
commit | b82a9401dfb76131c83f9bb441bf624c1ae7cc7f (patch) | |
tree | 57f94c31620c257045a351f953125b3fbda6c52e /clang/test/SemaCXX/default2.cpp | |
parent | 84685fc8310e89136409a43846dc1018e5a88489 (diff) | |
download | bcm5719-llvm-b82a9401dfb76131c83f9bb441bf624c1ae7cc7f.tar.gz bcm5719-llvm-b82a9401dfb76131c83f9bb441bf624c1ae7cc7f.zip |
Detect recursive default argument definition
If definition of default function argument uses itself, clang crashed,
because corresponding function parameter is not associated with the default
argument yet. With this fix clang emits appropriate error message.
This change fixes PR28105.
Differential Revision: http://reviews.llvm.org/D21301
llvm-svn: 272623
Diffstat (limited to 'clang/test/SemaCXX/default2.cpp')
-rw-r--r-- | clang/test/SemaCXX/default2.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/default2.cpp b/clang/test/SemaCXX/default2.cpp index c4d40b4280e..8f77f300572 100644 --- a/clang/test/SemaCXX/default2.cpp +++ b/clang/test/SemaCXX/default2.cpp @@ -128,3 +128,7 @@ S<1> s; template <int I1 = I2, int I2 = 1> struct T {}; // expected-error-re {{use of undeclared identifier 'I2'{{$}}}} T<0, 1> t; + +struct PR28105 { + PR28105 (int = 0, int = 0, PR28105 = 0); // expected-error{{recursive evaluation of default argument}} +}; |