tree-sitter-objc/test/corpus/macros.txt

367 lines
9.5 KiB
Plaintext

================================================================================
Macro: ifdef
================================================================================
#ifdef COND
#endif
--------------------------------------------------------------------------------
(translation_unit)
================================================================================
Macro: ifdef and else
================================================================================
#ifdef COND
#else
#endif
--------------------------------------------------------------------------------
(translation_unit)
================================================================================
Macro: ifdef in class interface
================================================================================
@interface ClassName
#ifdef COND
@property (readwrite, copy) float number;
#endif
@end
--------------------------------------------------------------------------------
(translation_unit
(class_interface
name: (identifier)
(property_declaration
(property_attributes
(readwrite)
(copy))
type: (primitive_type)
declarator: (identifier))))
================================================================================
Macro: ifdef in class implementation
================================================================================
@implementation ClassName
#ifdef COND
- (void)method {
}
#endif
@end
--------------------------------------------------------------------------------
(translation_unit
(class_implementation
name: (identifier)
(method_definition
scope: (instance_scope)
type: (primitive_type)
selector: (identifier)
body: (compound_statement))))
================================================================================
Macro: ifdef in class implementation
================================================================================
@implementation ClassName
#ifdef COND
- (void)method {
#ifdef COND
self;
#else
self = [super init];
#endif
}
#endif
@end
--------------------------------------------------------------------------------
(translation_unit
(class_implementation
name: (identifier)
(method_definition
scope: (instance_scope)
type: (primitive_type)
selector: (identifier)
body: (compound_statement
(expression_statement
(self))))))
================================================================================
Macro: preproc define in class implementation
================================================================================
@implementation ClassName
#define SD_MAX_FILE_EXTENSION_LENGTH 1
#define function(key, default) \
[object methodForKey:(key) defaultValue:(default)]
@end
--------------------------------------------------------------------------------
(translation_unit
(class_implementation
name: (identifier)
(preproc_def
name: (identifier)
value: (preproc_arg))
(preproc_function_def
name: (identifier)
parameters: (preproc_params
(identifier)
(identifier))
value: (preproc_arg))))
================================================================================
Macro: ifdef in extern
================================================================================
FOUNDATION_STATIC_INLINE NSUInteger SDMemoryCacheCostForImage(UIImage *image) {
#if SD_MAC
frameCount = 1;
#elif SD_UIKIT || SD_WATCH
frameCount = image.images.count > 0 ? image.images.count : 1;
#endif
return -1;
}
--------------------------------------------------------------------------------
(translation_unit
(function_definition
(storage_class_specifier)
type: (type_identifier)
declarator: (function_declarator
declarator: (identifier)
parameters: (parameter_list
(parameter_declaration
type: (type_identifier)
declarator: (pointer_declarator
declarator: (identifier)))))
body: (compound_statement
(expression_statement
(assignment_expression
left: (identifier)
right: (number_literal)))
(return_statement
(number_literal)))))
================================================================================
Macro: undef
================================================================================
#undef COND
#ifdef COND
#undef COND
#endif
#undef COND
#ifdef COND
#endif
--------------------------------------------------------------------------------
(translation_unit)
================================================================================
Macro: API_AVAILABLE
================================================================================
API_AVAILABLE(ios(14.0), tvos(14.0), macos(11.0), watchos(7.0))
@interface ClassName
@end
--------------------------------------------------------------------------------
(translation_unit
(class_interface
(attribute_specifier
(availability_attribute_specifier
(platform_version
platform: (platform)
version: (number_literal))
(platform_version
platform: (platform)
version: (number_literal))
(platform_version
platform: (platform)
version: (number_literal))
(platform_version
platform: (platform)
version: (number_literal))))
name: (identifier)))
================================================================================
Macro: pragma
================================================================================
#import <Foundation/Foundation.h>
#pragma mark - foobar
int main(int argc, char *argv[]) {
#pragma foobar
@autoreleasepool {
#pragma foorbar
}
}
--------------------------------------------------------------------------------
(translation_unit
(preproc_import
path: (system_lib_string))
(pragma)
(function_definition
type: (primitive_type)
declarator: (function_declarator
declarator: (identifier)
parameters: (parameter_list
(parameter_declaration
type: (primitive_type)
declarator: (identifier))
(parameter_declaration
type: (primitive_type)
declarator: (pointer_declarator
declarator: (array_declarator
declarator: (identifier))))))
body: (compound_statement
(pragma)
(autoreleasepool_statement
consequence: (compound_statement
(pragma))))))
================================================================================
Macros: ifdef
================================================================================
#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < 90000)
[obj method];
#endif
#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED < 90000) \
|| (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101100)
[obj method];
#endif
#if COND
#else
@implementation ClassName
#if COND
- (NSArray *)method:(BOOL)arg1
{
#if COND
if (arg1) {
}
#else
#endif
return @[];
}
#else
#endif
@end
#endif
--------------------------------------------------------------------------------
(translation_unit
(expression_statement
(message_expression
receiver: (type_identifier)
selector: (identifier)))
(expression_statement
(message_expression
receiver: (type_identifier)
selector: (identifier)))
(class_implementation
name: (identifier)
(method_definition
scope: (instance_scope)
type: (type_identifier)
declarator: (abstract_pointer_declarator)
selector: (keyword_selector
(keyword_declarator
keyword: (identifier)
type: (BOOL)
name: (identifier)))
body: (compound_statement
(if_statement
condition: (parenthesized_expression
(identifier))
consequence: (compound_statement))
(return_statement
(array_expression))))))
================================================================================
Macros: nested ifdef
================================================================================
#ifdef __OBJC__
#import <UIKit/UIKit.h> // retain
#else
#ifndef FOUNDATION_EXPORT
#if defined(__cplusplus)
#define FOUNDATION_EXPORT extern "C" // retain
#else
#define FOUNDATION_EXPORT extern
#endif
#endif
#endif
--------------------------------------------------------------------------------
(translation_unit
(preproc_import
path: (system_lib_string))
(comment)
(preproc_def
name: (identifier)
value: (preproc_arg)))
================================================================================
Macros: CF_EXTERN_C_BEGIN and CF_EXTERN_C_END
================================================================================
CF_EXTERN_C_BEGIN
NSMutableArray* GetOpaqueDataArray();
CF_EXTERN_C_END
--------------------------------------------------------------------------------
(translation_unit
(declaration
type: (type_identifier)
declarator: (pointer_declarator
declarator: (function_declarator
declarator: (identifier)
parameters: (parameter_list)))))
================================================================================
Macros: blank behind NS_ASSUME_NONNULL_BEGIN and NS_ASSUME_NONNULL_END
================================================================================
NS_ASSUME_NONNULL_BEGIN
NS_ASSUME_NONNULL_END
--------------------------------------------------------------------------------
(translation_unit)