f624800b84
I was forced to manually do update the following files, because otherwise they would be ignored according .gitignore settings. Probably they should be deleted from repo. Interop/.idea/compiler.xml Interop/.idea/gradle.xml Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_runtime_1_0_3.xml Interop/.idea/libraries/Gradle__org_jetbrains_kotlin_kotlin_stdlib_1_0_3.xml Interop/.idea/modules.xml Interop/.idea/modules/Indexer/Indexer.iml Interop/.idea/modules/Runtime/Runtime.iml Interop/.idea/modules/StubGenerator/StubGenerator.iml backend.native/backend.native.iml backend.native/bc.frontend/bc.frontend.iml backend.native/cli.bc/cli.bc.iml backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2Native.kt backend.native/cli.bc/src/org/jetbrains/kotlin/cli/bc/K2NativeCompilerArguments.kt backend.native/tests/link/lib/foo.kt backend.native/tests/link/lib/foo2.kt backend.native/tests/teamcity-test.property
98 lines
2.0 KiB
Objective-C
98 lines
2.0 KiB
Objective-C
#import <stdio.h>
|
|
#import <Foundation/NSString.h>
|
|
#import "smoke.h"
|
|
|
|
@interface CPrinter : NSObject <Printer>
|
|
-(void)print:(const char*)string;
|
|
@end;
|
|
|
|
@implementation CPrinter
|
|
-(void)print:(const char*)string {
|
|
printf("%s\n", string);
|
|
fflush(stdout);
|
|
}
|
|
@end;
|
|
|
|
@implementation Foo
|
|
|
|
@synthesize name;
|
|
|
|
-(instancetype)init {
|
|
if (self = [super init]) {
|
|
self.name = @"World";
|
|
}
|
|
return self;
|
|
}
|
|
|
|
-(void)helloWithPrinter:(id <Printer>)printer {
|
|
NSString* message = [NSString stringWithFormat:@"Hello, %@!", self.name];
|
|
[printer print:message.UTF8String];
|
|
}
|
|
|
|
-(void)dealloc {
|
|
printf("Deallocated\n");
|
|
}
|
|
|
|
@end;
|
|
|
|
@implementation Foo (FooExtensions)
|
|
|
|
-(void)hello {
|
|
CPrinter* printer = [[CPrinter alloc] init];
|
|
[self helloWithPrinter:printer];
|
|
}
|
|
@end;
|
|
|
|
void replacePairElements(id <MutablePair> pair, int first, int second) {
|
|
[pair update:0 add:(first - pair.first)];
|
|
[pair update:1 sub:(pair.second - second)];
|
|
}
|
|
|
|
int (^getSupplier(int x))(void) {
|
|
return ^{
|
|
return x;
|
|
};
|
|
}
|
|
|
|
Class (^ _Nonnull getClassGetter(NSObject* obj))() {
|
|
return ^{ return obj.class; };
|
|
}
|
|
|
|
NSString* globalString = @"Global string";
|
|
NSObject* globalObject = nil;
|
|
|
|
int formatStringLength(NSString* format, ...) {
|
|
va_list args;
|
|
va_start(args, format);
|
|
NSString* result = [[NSString alloc] initWithFormat:format arguments:args];
|
|
va_end(args);
|
|
return result.length;
|
|
}
|
|
|
|
BOOL unexpectedDeallocation = NO;
|
|
|
|
@implementation MustNotBeDeallocated
|
|
-(void)dealloc {
|
|
unexpectedDeallocation = YES;
|
|
}
|
|
@end;
|
|
|
|
static CustomRetainMethodsImpl* retainedCustomRetainMethodsImpl;
|
|
|
|
@implementation CustomRetainMethodsImpl
|
|
-(id)returnRetained:(id)obj __attribute__((ns_returns_retained)) {
|
|
return obj;
|
|
}
|
|
|
|
-(void)consume:(id) __attribute__((ns_consumed)) obj {
|
|
}
|
|
|
|
-(void)consumeSelf __attribute__((ns_consumes_self)) {
|
|
retainedCustomRetainMethodsImpl = self; // Retain to detect possible over-release.
|
|
}
|
|
|
|
-(void (^)(void))returnRetainedBlock:(void (^)(void))block __attribute__((ns_returns_retained)) {
|
|
return block;
|
|
}
|
|
@end;
|