diff options
author | Richard Trieu <rtrieu@google.com> | 2014-07-24 04:24:50 +0000 |
---|---|---|
committer | Richard Trieu <rtrieu@google.com> | 2014-07-24 04:24:50 +0000 |
commit | 3880089fc7e7b4c2be8eccb09379a02db9160189 (patch) | |
tree | 43a671763048380ee8154ccf2fde884af52948e1 /clang/test/Misc/diag-template-diffing.cpp | |
parent | 7fd11896a81550a0d7207ead64ec1846ba88a8f6 (diff) | |
download | bcm5719-llvm-3880089fc7e7b4c2be8eccb09379a02db9160189.tar.gz bcm5719-llvm-3880089fc7e7b4c2be8eccb09379a02db9160189.zip |
Add support for nullptr template arguments to template type diffing.
llvm-svn: 213840
Diffstat (limited to 'clang/test/Misc/diag-template-diffing.cpp')
-rw-r--r-- | clang/test/Misc/diag-template-diffing.cpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/clang/test/Misc/diag-template-diffing.cpp b/clang/test/Misc/diag-template-diffing.cpp index fcafb332564..55ffb19c33f 100644 --- a/clang/test/Misc/diag-template-diffing.cpp +++ b/clang/test/Misc/diag-template-diffing.cpp @@ -1129,6 +1129,60 @@ Wrapper<S<(&global2)>> W4 = MakeWrapper<S<(&global)>>(); // CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global>>' to 'Wrapper<S<&global2>>' } +namespace NullPtr { +template <int*, int*> +struct S {}; + +template <class T> +struct Wrapper {}; + +template <class T> +Wrapper<T> MakeWrapper(); +int global, global2; +constexpr int * ptr = nullptr; +constexpr int * ptr2 = static_cast<int*>(0); + +S<&global> s1 = S<&global, ptr>(); +S<&global, nullptr> s2 = S<&global, ptr>(); + +S<&global, nullptr> s3 = S<&global, &global>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'S<[...], &global>' to 'S<[...], nullptr>' +S<&global, ptr> s4 = S<&global, &global>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'S<[...], &global>' to 'S<[...], ptr> + +Wrapper<S<&global, nullptr>> W1 = MakeWrapper<S<&global, ptr>>(); +Wrapper<S<&global, static_cast<int*>(0)>> W2 = MakeWrapper<S<&global, ptr>>(); + +Wrapper<S<&global, nullptr>> W3 = MakeWrapper<S<&global, &global>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<[...], &global>>' to 'Wrapper<S<[...], nullptr>>' +Wrapper<S<&global, ptr>> W4 = MakeWrapper<S<&global, &global>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<[...], &global>>' to 'Wrapper<S<[...], ptr>>' + +Wrapper<S<&global2, ptr>> W5 = MakeWrapper<S<&global, nullptr>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, nullptr>> W6 = MakeWrapper<S<&global, nullptr>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, ptr2>> W7 = MakeWrapper<S<&global, nullptr>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, nullptr>> W8 = MakeWrapper<S<&global, ptr2>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, ptr>> W9 = MakeWrapper<S<&global, ptr2>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, ptr2>> W10 = MakeWrapper<S<&global, ptr>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, static_cast<int *>(0)>> W11 = + MakeWrapper<S<&global, nullptr>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' +Wrapper<S<&global2, nullptr>> W12 = + MakeWrapper<S<&global, static_cast<int *>(0)>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<&global, [...]>>' to 'Wrapper<S<&global2, [...]>>' + +Wrapper<S<&global, &global>> W13 = MakeWrapper<S<&global, ptr>>(); +// C HECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<[...], nullptr>>' to 'Wrapper<S<[...], &global>>' +Wrapper<S<&global, ptr>> W14 = MakeWrapper<S<&global, &global>>(); +// CHECK-ELIDE-NOTREE: no viable conversion from 'Wrapper<S<[...], &global>>' to 'Wrapper<S<[...], ptr>>' +} + // CHECK-ELIDE-NOTREE: {{[0-9]*}} errors generated. // CHECK-NOELIDE-NOTREE: {{[0-9]*}} errors generated. // CHECK-ELIDE-TREE: {{[0-9]*}} errors generated. |