attribute with no arguments provided.
case ParsedAttr::AT_AcquireHandle: {
if (!type->isFunctionType())
return;
+
+ if (attr.getNumArgs() != 1) {
+ state.getSema().Diag(attr.getLoc(),
+ diag::err_attribute_wrong_number_arguments)
+ << attr << 1;
+ attr.setInvalid();
+ return;
+ }
+
StringRef HandleType;
if (!state.getSema().checkStringLiteralArgumentAttr(attr, 0, HandleType))
return;
auto lambdat = [](int handle __attribute__((use_handle("Fuchsia"))))
__attribute__((acquire_handle("Fuchsia"))) -> int { return 0; };
int __attribute((acquire_handle("Fuchsia"))) ta; // expected-warning {{'acquire_handle' attribute only applies to functions, typedefs, and parameters}}
+int open(const char *path, int flags, ...) [[clang::acquire_handle]]; // expected-error {{'acquire_handle' attribute takes one argument}}
// Typedefs.
typedef int callback(char *) __attribute__((acquire_handle("Fuchsia")));