zoecarver updated this revision to Diff 255361. zoecarver added a comment. Fix based on review:
- Use static_assert directly in the test - Update run command to work on non-objc platforms (e.g. linux) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D77519/new/ https://reviews.llvm.org/D77519 Files: clang/test/SemaObjC/type-traits-is-pointer.mm clang/test/SemaObjCXX/type-traits-is-pointer.mm
Index: clang/test/SemaObjCXX/type-traits-is-pointer.mm =================================================================== --- /dev/null +++ clang/test/SemaObjCXX/type-traits-is-pointer.mm @@ -0,0 +1,48 @@ +// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -verify %s +// expected-no-diagnostics + +template <typename T> +void test_is_pointer() { + static_assert(__is_pointer(T), ""); + + static_assert(__is_pointer(T __weak), ""); + static_assert(__is_pointer(T __strong), ""); + static_assert(__is_pointer(T __autoreleasing), ""); + static_assert(__is_pointer(T __unsafe_unretained), ""); + + static_assert(__is_pointer(T __weak const), ""); + static_assert(__is_pointer(T __strong const), ""); + static_assert(__is_pointer(T __autoreleasing const), ""); + static_assert(__is_pointer(T __unsafe_unretained const), ""); + + static_assert(__is_pointer(T __weak volatile), ""); + static_assert(__is_pointer(T __strong volatile), ""); + static_assert(__is_pointer(T __autoreleasing volatile), ""); + static_assert(__is_pointer(T __unsafe_unretained volatile), ""); + + static_assert(__is_pointer(T __weak const volatile), ""); + static_assert(__is_pointer(T __strong const volatile), ""); + static_assert(__is_pointer(T __autoreleasing const volatile), ""); + static_assert(__is_pointer(T __unsafe_unretained const volatile), ""); +} + +@class Foo; + +int main(int, char**) { + test_is_pointer<id>(); + test_is_pointer<id const>(); + test_is_pointer<id volatile>(); + test_is_pointer<id const volatile>(); + + test_is_pointer<Foo*>(); + test_is_pointer<Foo const*>(); + test_is_pointer<Foo volatile*>(); + test_is_pointer<Foo const volatile*>(); + + test_is_pointer<void*>(); + test_is_pointer<void const*>(); + test_is_pointer<void volatile*>(); + test_is_pointer<void const volatile*>(); + + return 0; +} Index: clang/test/SemaObjC/type-traits-is-pointer.mm =================================================================== --- clang/test/SemaObjC/type-traits-is-pointer.mm +++ /dev/null @@ -1,52 +0,0 @@ -// RUN: %clang -fobjc-arc %s - -template <typename T> -void assert_is_pointer() { - static_assert(__is_pointer(T), ""); -} - -template <typename T> -void test_is_pointer() { - assert_is_pointer<T>(); - - assert_is_pointer<T __weak>(); - assert_is_pointer<T __strong>(); - assert_is_pointer<T __autoreleasing>(); - assert_is_pointer<T __unsafe_unretained>(); - - assert_is_pointer<T __weak const>(); - assert_is_pointer<T __strong const>(); - assert_is_pointer<T __autoreleasing const>(); - assert_is_pointer<T __unsafe_unretained const>(); - - assert_is_pointer<T __weak volatile>(); - assert_is_pointer<T __strong volatile>(); - assert_is_pointer<T __autoreleasing volatile>(); - assert_is_pointer<T __unsafe_unretained volatile>(); - - assert_is_pointer<T __weak const volatile>(); - assert_is_pointer<T __strong const volatile>(); - assert_is_pointer<T __autoreleasing const volatile>(); - assert_is_pointer<T __unsafe_unretained const volatile>(); -} - -@class Foo; - -int main(int, char**) { - test_is_pointer<id>(); - test_is_pointer<id const>(); - test_is_pointer<id volatile>(); - test_is_pointer<id const volatile>(); - - test_is_pointer<Foo*>(); - test_is_pointer<Foo const*>(); - test_is_pointer<Foo volatile*>(); - test_is_pointer<Foo const volatile*>(); - - test_is_pointer<void*>(); - test_is_pointer<void const*>(); - test_is_pointer<void volatile*>(); - test_is_pointer<void const volatile*>(); - - return 0; -}
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits