mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-24 05:55:43 -04: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
23 lines
1.1 KiB
C
23 lines
1.1 KiB
C
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
|
|
|
typedef int kern_return_t;
|
|
#define KERN_SUCCESS 0
|
|
|
|
__attribute__((mig_server_routine)) kern_return_t var = KERN_SUCCESS; // expected-warning{{'mig_server_routine' attribute only applies to functions, Objective-C methods, and blocks}}
|
|
|
|
__attribute__((mig_server_routine)) void foo_void(); // expected-warning{{'mig_server_routine' attribute only applies to routines that return a kern_return_t}}
|
|
__attribute__((mig_server_routine)) int foo_int(); // expected-warning{{'mig_server_routine' attribute only applies to routines that return a kern_return_t}}
|
|
|
|
__attribute__((mig_server_routine)) kern_return_t bar_extern(); // no-warning
|
|
__attribute__((mig_server_routine)) kern_return_t bar_forward(); // no-warning
|
|
|
|
__attribute__((mig_server_routine)) kern_return_t bar_definition() { // no-warning
|
|
return KERN_SUCCESS;
|
|
}
|
|
|
|
kern_return_t bar_forward() { // no-warning
|
|
return KERN_SUCCESS;
|
|
}
|
|
|
|
__attribute__((mig_server_routine(123))) kern_return_t bar_with_argument(); // expected-error{{'mig_server_routine' attribute takes no arguments}}
|