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