blob: 8e269d4668d66ef61141151ea32564c8ffa953bc [file] [log] [blame]
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
#import <Foundation/NSObject.h>
#import <Foundation/NSError.h>
@interface ErrorMethodTestObject : NSObject {}
- (BOOL) errorMethodReturningBool:(BOOL) isOk
error:(NSError**) error;
- (nullable NSObject*) errorMethodReturningNullable:(BOOL) isOk
error:(NSError**) error;
- (BOOL) outErrorMethod:(BOOL) isOk outError:(NSError**) outError;
// Using this nonnull BEGIN/END macro because the usual nullability
// annotations are giving syntax errors when combined with pointer pointers.
// Also, the name of this macro is misleading. It seems to actually change the
// behavior to assuming nullable.
NS_ASSUME_NONNULL_BEGIN
- (BOOL) nullableErrorMethod:(BOOL) isOk error:(NSError**) error;
NS_ASSUME_NONNULL_END
@end
@implementation ErrorMethodTestObject
- (BOOL) errorMethodReturningBool:(BOOL) isOk
error:(NSError**) error {
if (!isOk) {
*error = [NSError errorWithDomain:@"Oh no, an error!"
code:123 userInfo:nil];
}
return isOk;
}
- (nullable NSObject*) errorMethodReturningNullable:(BOOL) isOk
error:(NSError**) error {
if (isOk) {
return [NSObject new];
} else {
*error = [NSError errorWithDomain:@"Oh no, another error!"
code:123 userInfo:nil];
return nil;
}
}
- (BOOL) outErrorMethod:(BOOL) isOk outError:(NSError**) outError {
if (!isOk) {
*outError = [NSError errorWithDomain:@"Oh no, an error!"
code:123 userInfo:nil];
}
return isOk;
}
NS_ASSUME_NONNULL_BEGIN
- (BOOL) nullableErrorMethod:(BOOL) isOk error:(NSError**) error {
if (!isOk) {
*error = [NSError errorWithDomain:@"Oh no, an error!"
code:123 userInfo:nil];
}
return isOk;
}
NS_ASSUME_NONNULL_END
@end