diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-02-17 00:04:04 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-02-17 00:04:04 +0000 |
commit | c28aee6a51a9eceb4c34269330d3f3d97e01f936 (patch) | |
tree | 4fac39109dce0a0a8835ed13ce610251a0784524 /clang/test/SemaCXX/literal-operators.cpp | |
parent | b68464eb7825a83fa8d3cb867adfd7339a255c45 (diff) | |
download | bcm5719-llvm-c28aee6a51a9eceb4c34269330d3f3d97e01f936.tar.gz bcm5719-llvm-c28aee6a51a9eceb4c34269330d3f3d97e01f936.zip |
Improve diagnostics for ill-formed literal operator declarations.
Patch by Erik Pilkington!
llvm-svn: 261034
Diffstat (limited to 'clang/test/SemaCXX/literal-operators.cpp')
-rw-r--r-- | clang/test/SemaCXX/literal-operators.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/test/SemaCXX/literal-operators.cpp b/clang/test/SemaCXX/literal-operators.cpp index ba571788b96..304aa7cab7f 100644 --- a/clang/test/SemaCXX/literal-operators.cpp +++ b/clang/test/SemaCXX/literal-operators.cpp @@ -35,13 +35,14 @@ typedef const char c; void operator "" _good (c*); // Check extra cv-qualifiers -void operator "" _cv_good (volatile const char *, const size_t); // expected-error {{parameter declaration for literal operator 'operator""_cv_good' is not valid}} +void operator "" _cv_good (volatile const char *, const size_t); // expected-error {{invalid literal operator parameter type 'const volatile char *', did you mean 'const char *'?}} // Template declaration template <char...> void operator "" _good (); -// FIXME: Test some invalid decls that might crop up. -template <typename...> void operator "" _invalid(); // expected-error {{parameter declaration for literal operator 'operator""_invalid' is not valid}} +template <typename...> void operator "" _invalid(); // expected-error {{template parameter list for literal operator must be either 'char...' or 'typename T, T...'}} +template <wchar_t...> void operator "" _invalid(); // expected-error {{template parameter list for literal operator must be either 'char...' or 'typename T, T...'}} +template <unsigned long long...> void operator "" _invalid(); // expected-error {{template parameter list for literal operator must be either 'char...' or 'typename T, T...'}} _Complex float operator""if(long double); // expected-warning {{reserved}} _Complex float test_if_1() { return 2.0f + 1.5if; }; |