diff options
author | Eric Fiselier <eric@efcs.ca> | 2019-02-01 22:06:02 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2019-02-01 22:06:02 +0000 |
commit | 1147f71fed863639e3695a8be6979c39397d88b6 (patch) | |
tree | fa7d7f4ad57310891cadad2ea809660f0623975c /clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp | |
parent | 2e719bc428d27345da7cdcfa634c03ec69f31474 (diff) | |
download | bcm5719-llvm-1147f71fed863639e3695a8be6979c39397d88b6.tar.gz bcm5719-llvm-1147f71fed863639e3695a8be6979c39397d88b6.zip |
Improve diagnostic to tell you a type is incomplete.
I recently ran into this code:
```
\#include <iostream>
void foo(const std::string &s, const std::string& = "");
\#include <string>
void test() { foo(""); }
```
The diagnostic produced said it can't bind char[1] to std::string
const&. It didn't mention std::string is incomplete. The user had to
infer that.
This patch causes the diagnostic to now say "incomplete type".
llvm-svn: 352927
Diffstat (limited to 'clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp')
-rw-r--r-- | clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp index f371891e548..9a82ec4a7bd 100644 --- a/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp +++ b/clang/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp @@ -327,7 +327,7 @@ namespace update_rbrace_loc_crash { struct A {}; template <typename T, typename F, int... I> std::initializer_list<T> ExplodeImpl(F p1, A<int, I...>) { - // expected-error@+1 {{reference to type 'const update_rbrace_loc_crash::Incomplete' could not bind to an rvalue of type 'void'}} + // expected-error@+1 {{reference to incomplete type 'const update_rbrace_loc_crash::Incomplete' could not bind to an rvalue of type 'void'}} return {p1(I)...}; } template <typename T, int N, typename F> |