================
@@ -9,11 +9,20 @@ namespace usage_invalid {
     ~A() [[clang::lifetimebound]]; // expected-error {{cannot be applied to a 
destructor}}
     static int *static_class_member() [[clang::lifetimebound]]; // 
expected-error {{static member function has no implicit object parameter}}
     int *explicit_object(this A&) [[clang::lifetimebound]]; // expected-error 
{{explicit object member function has no implicit object parameter}}
-    int not_function [[clang::lifetimebound]]; // expected-error {{only 
applies to parameters and implicit object parameters}}
-    int [[clang::lifetimebound]] also_not_function; // expected-error {{cannot 
be applied to types}}
+    int attr_on_var [[clang::lifetimebound]]; // expected-error {{only applies 
to parameters and implicit object parameters}}
+    int [[clang::lifetimebound]] attr_on_int; // expected-error {{cannot be 
applied to types}}
+    int * [[clang::lifetimebound]] attr_on_int_ptr; // expected-error {{cannot 
be applied to types}}
+    int * [[clang::lifetimebound]] * attr_on_int_ptr_ptr; // expected-error 
{{cannot be applied to types}}
+    int (* [[clang::lifetimebound]] attr_on_func_ptr)(); // expected-error 
{{cannot be applied to types}}
     void void_return_member() [[clang::lifetimebound]]; // expected-error 
{{'lifetimebound' attribute cannot be applied to an implicit object parameter 
of a function that returns void; did you mean 'lifetime_capture_by(X)'}}
   };
   int *attr_with_param(int &param [[clang::lifetimebound(42)]]); // 
expected-error {{takes no arguments}}
----------------
hokein wrote:

Agree that function typedefs are rare, and I think other attributes also don't 
apply to them.

https://github.com/llvm/llvm-project/pull/118281
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to