diff options
| author | Vassil Vassilev <v.g.vassilev@gmail.com> | 2016-03-30 22:18:29 +0000 |
|---|---|---|
| committer | Vassil Vassilev <v.g.vassilev@gmail.com> | 2016-03-30 22:18:29 +0000 |
| commit | bab6f96fff363fbfdc15fd1f62452ff243da843c (patch) | |
| tree | de254d8844eac530c84100e03dab88909baf8cdd /clang/test | |
| parent | d8d94652b2345f596b3a62dbcd32cbb0a1a50856 (diff) | |
| download | bcm5719-llvm-bab6f96fff363fbfdc15fd1f62452ff243da843c.tar.gz bcm5719-llvm-bab6f96fff363fbfdc15fd1f62452ff243da843c.zip | |
Canonicalize UnaryTransformType types when they don't have a known underlying type.
Fixes https://llvm.org/bugs/show_bug.cgi?id=26014
Reviewed by Richard Smith.
llvm-svn: 264937
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/Modules/Inputs/PR26014/A.h | 13 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/PR26014/B.h | 10 | ||||
| -rw-r--r-- | clang/test/Modules/Inputs/PR26014/module.modulemap | 9 | ||||
| -rw-r--r-- | clang/test/Modules/pr26014.cpp | 7 | ||||
| -rw-r--r-- | clang/test/SemaCXX/underlying_type.cpp | 7 |
5 files changed, 46 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/PR26014/A.h b/clang/test/Modules/Inputs/PR26014/A.h new file mode 100644 index 00000000000..49de5ba479a --- /dev/null +++ b/clang/test/Modules/Inputs/PR26014/A.h @@ -0,0 +1,13 @@ +#ifndef _LIBCPP_TYPE_TRAITS +#define _LIBCPP_TYPE_TRAITS + + +template <class _Tp> +struct underlying_type +{ + typedef __underlying_type(_Tp) type; +}; + +#endif // _LIBCPP_TYPE_TRAITS + +#include "B.h" diff --git a/clang/test/Modules/Inputs/PR26014/B.h b/clang/test/Modules/Inputs/PR26014/B.h new file mode 100644 index 00000000000..58d1f8ff2a3 --- /dev/null +++ b/clang/test/Modules/Inputs/PR26014/B.h @@ -0,0 +1,10 @@ +#ifndef _LIBCPP_TYPE_TRAITS +#define _LIBCPP_TYPE_TRAITS + +template <class _Tp> +struct underlying_type +{ + typedef __underlying_type(_Tp) type; +}; + +#endif // _LIBCPP_TYPE_TRAITS diff --git a/clang/test/Modules/Inputs/PR26014/module.modulemap b/clang/test/Modules/Inputs/PR26014/module.modulemap new file mode 100644 index 00000000000..49374181d75 --- /dev/null +++ b/clang/test/Modules/Inputs/PR26014/module.modulemap @@ -0,0 +1,9 @@ +module A { + header "A.h" + export * +} + +module B { + header "B.h" + export * +} diff --git a/clang/test/Modules/pr26014.cpp b/clang/test/Modules/pr26014.cpp new file mode 100644 index 00000000000..f9ebd4e1dd7 --- /dev/null +++ b/clang/test/Modules/pr26014.cpp @@ -0,0 +1,7 @@ +// RUN: rm -rf %t +// RUN: %clang_cc1 -I%S/Inputs/PR26014 -verify %s +// RUN: %clang_cc1 -fmodules -fmodule-map-file=%S/Inputs/PR26014/module.modulemap -fmodules-cache-path=%t -I%S/Inputs/PR26014 -verify %s + +#include "A.h" + +// expected-no-diagnostics diff --git a/clang/test/SemaCXX/underlying_type.cpp b/clang/test/SemaCXX/underlying_type.cpp index 61208c72af0..dd019ae6e27 100644 --- a/clang/test/SemaCXX/underlying_type.cpp +++ b/clang/test/SemaCXX/underlying_type.cpp @@ -55,3 +55,10 @@ namespace PR19966 { // expected-error@-2 {{constant expression}} }; } + +template<typename T> void f(__underlying_type(T)); +template<typename T> void f(__underlying_type(T)); +enum E {}; +void PR26014() { f<E>(0); } // should not yield an ambiguity error. + +template<typename ...T> void f(__underlying_type(T) v); // expected-error {{declaration type contains unexpanded parameter pack 'T'}} |

