1 // RUN: %clang_cc1 -fsycl-is-device -fsyntax-only -verify -Wno-unused %s 2 3 namespace NS { 4 using good = double; 5 } 6 f(int var)7void f(int var) { 8 // expected-error@+1{{expected '(' after '__builtin_sycl_unique_stable_name'}} 9 __builtin_sycl_unique_stable_name int; // Correct usage is __builtin_sycl_unique_stable_name(int); 10 11 // expected-error@+1{{expected '(' after '__builtin_sycl_unique_stable_name'}} 12 __builtin_sycl_unique_stable_name{int}; // Correct usage is __builtin_sycl_unique_stable_name(int); 13 14 // expected-error@+2{{expected ')'}} 15 // expected-note@+1{{to match this '('}} 16 __builtin_sycl_unique_stable_name(int; // Missing paren before semicolon 17 18 // expected-error@+2{{expected ')'}} 19 // expected-note@+1{{to match this '('}} 20 __builtin_sycl_unique_stable_name(int, float); // Missing paren before comma 21 22 // expected-error@+1{{unknown type name 'var'}} 23 __builtin_sycl_unique_stable_name(var); 24 __builtin_sycl_unique_stable_name(NS::good); 25 26 // expected-error@+1{{expected a type}} 27 __builtin_sycl_unique_stable_name(for (int i = 0; i < 10; ++i) {}) 28 __builtin_sycl_unique_stable_name({ 29 (for (int i = 0; i < 10; ++i){})}) 30 } 31 32 template <typename T> 33 void f2() { 34 __builtin_sycl_unique_stable_name(typename T::good_type); 35 } 36 37 struct S { 38 class good_type {}; 39 }; 40 41 void use() { 42 f2<S>(); 43 } 44