mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-28 16:26:05 +00:00

The new __attribute__ ((mig_server_routine)) is going to be used for annotating Mach Interface Generator (MIG) callback functions as such, so that additional static analysis could be applied to their implementations. It can also be applied to regular functions behavior of which is supposed to be identical to that of a MIG server routine. Differential Revision: https://reviews.llvm.org/D58365 llvm-svn: 354530
21 lines
1.1 KiB
C++
21 lines
1.1 KiB
C++
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
typedef int kern_return_t;
|
|
typedef kern_return_t IOReturn;
|
|
#define KERN_SUCCESS 0
|
|
#define kIOReturnSuccess KERN_SUCCESS
|
|
|
|
class MyServer {
|
|
public:
|
|
virtual __attribute__((mig_server_routine)) IOReturn externalMethod();
|
|
virtual __attribute__((mig_server_routine)) void anotherMethod(); // expected-warning{{'mig_server_routine' attribute only applies to routines that return a kern_return_t}}
|
|
virtual __attribute__((mig_server_routine)) int yetAnotherMethod(); // expected-warning{{'mig_server_routine' attribute only applies to routines that return a kern_return_t}}
|
|
[[clang::mig_server_routine]] virtual IOReturn cppAnnotatedMethod();
|
|
[[clang::mig_server_routine("arg")]] virtual IOReturn cppAnnotatedMethodWithInvalidArgs(); // expected-error{{'mig_server_routine' attribute takes no arguments}}
|
|
[[clang::mig_server_routine]] virtual int cppInvalidAnnotatedMethod(); // expected-warning{{'mig_server_routine' attribute only applies to routines that return a kern_return_t}}
|
|
};
|
|
|
|
IOReturn MyServer::externalMethod() {
|
|
return kIOReturnSuccess;
|
|
}
|