diff options
| author | Douglas Gregor <dgregor@apple.com> | 2010-02-13 06:05:33 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2010-02-13 06:05:33 +0000 |
| commit | 04922cbb46f1416af7dcda58de6ab65c8855480f (patch) | |
| tree | 792f8a3d7a7e0542a8863800aabe61c03ca74873 /clang/test | |
| parent | 42c66b72707b516fa939b46eb537e9dae8daed26 (diff) | |
| download | bcm5719-llvm-04922cbb46f1416af7dcda58de6ab65c8855480f.tar.gz bcm5719-llvm-04922cbb46f1416af7dcda58de6ab65c8855480f.zip | |
Fix a fiendinshly fun little type-canonicalization bug, where we were
rebuilding a typename type terminating in a template-id (with
dependent template name, naturally) as a TypenameType when, because
its context could be fully resolved, we should have been building it
as a QualifiedNameType. Fixes PR6268.
llvm-svn: 96084
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/SemaTemplate/typename-specifier-4.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/clang/test/SemaTemplate/typename-specifier-4.cpp b/clang/test/SemaTemplate/typename-specifier-4.cpp index 9c757c5ad0f..0a6fef74c34 100644 --- a/clang/test/SemaTemplate/typename-specifier-4.cpp +++ b/clang/test/SemaTemplate/typename-specifier-4.cpp @@ -80,3 +80,22 @@ namespace PR6236 { } }; } + +namespace PR6268 { + template <typename T> + struct Outer { + template <typename U> + struct Inner {}; + + template <typename U> + typename Outer<T>::template Inner<U> + foo(typename Outer<T>::template Inner<U>); + }; + + template <typename T> + template <typename U> + typename Outer<T>::template Inner<U> + Outer<T>::foo(typename Outer<T>::template Inner<U>) { + return Inner<U>(); + } +} |

