brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · ff5a241 Raw
73 lines · cpp
1// RUN: %clang_cc1 %s -std=c++23 -verify -fsyntax-only2 3// expected-no-diagnostics4 5class C_in_class {6#include "../Sema/attr-callback.c"7};8 9class ExplicitParameterObject {10  __attribute__((callback(2, 1))) void explicit_this_idx(this ExplicitParameterObject* self, void (*callback)(ExplicitParameterObject*));11  __attribute__((callback(2, self))) void explicit_this_identifier(this ExplicitParameterObject* self, void (*callback)(ExplicitParameterObject*));12};13 14struct Base {15 16  void no_args_1(void (*callback)(void));17  __attribute__((callback(1))) void no_args_2(void (*callback)(void));18  __attribute__((callback(callback))) void no_args_3(void (*callback)(void)) {}19 20  __attribute__((callback(1, 0))) virtual void21  this_tr(void (*callback)(Base *));22 23  __attribute__((callback(1, this, __, this))) virtual void24  this_unknown_this(void (*callback)(Base *, Base *, Base *));25 26  __attribute__((callback(1))) virtual void27  virtual_1(void (*callback)(void));28 29  __attribute__((callback(callback))) virtual void30  virtual_2(void (*callback)(void));31 32  __attribute__((callback(1))) virtual void33  virtual_3(void (*callback)(void));34};35 36__attribute__((callback(1))) void37Base::no_args_1(void (*callback)(void)) {38}39 40void Base::no_args_2(void (*callback)(void)) {41}42 43struct Derived_1 : public Base {44 45  __attribute__((callback(1, 0))) virtual void46  this_tr(void (*callback)(Base *)) override;47 48  __attribute__((callback(1))) virtual void49  virtual_1(void (*callback)(void)) override {}50 51  virtual void52  virtual_3(void (*callback)(void)) override {}53};54 55struct Derived_2 : public Base {56 57  __attribute__((callback(callback))) virtual void58  virtual_1(void (*callback)(void)) override;59 60  virtual void61  virtual_2(void (*callback)(void)) override;62 63  virtual void64  virtual_3(void (*callback)(void)) override;65};66 67void Derived_2::virtual_1(void (*callback)(void)) {}68 69__attribute__((callback(1))) void70Derived_2::virtual_2(void (*callback)(void)) {}71 72void Derived_2::virtual_3(void (*callback)(void)) {}73