diff options
Diffstat (limited to 'platform/darwin/src')
5 files changed, 20 insertions, 11 deletions
diff --git a/platform/darwin/src/MGLStyleValue_Private.h b/platform/darwin/src/MGLStyleValue_Private.h index fee34b4b71..376bf5e73b 100644 --- a/platform/darwin/src/MGLStyleValue_Private.h +++ b/platform/darwin/src/MGLStyleValue_Private.h @@ -291,7 +291,7 @@ private: // Private utilities for converting from mbgl to mgl values } // Array - static ObjCType toMGLRawStyleValue(const std::vector<MBGLElement> &mbglStopValue) { + static NSArray<NSExpression*> *toMGLRawStyleValue(const std::vector<MBGLElement> &mbglStopValue) { NSMutableArray *array = [NSMutableArray arrayWithCapacity:mbglStopValue.size()]; for (const auto &mbglElement: mbglStopValue) { [array addObject:[NSExpression expressionForConstantValue:toMGLRawStyleValue(mbglElement)]]; diff --git a/platform/darwin/src/NSExpression+MGLAdditions.h b/platform/darwin/src/NSExpression+MGLAdditions.h index a19ec1af2e..9ef6623068 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.h +++ b/platform/darwin/src/NSExpression+MGLAdditions.h @@ -190,7 +190,7 @@ FOUNDATION_EXTERN MGL_EXPORT const MGLExpressionInterpolationMode MGLExpressionI @return An initialized expression equivalent to `object`, suitable for use as the value of a style layer attribute. */ -+ (instancetype)expressionWithMGLJSONObject:(id)object NS_SWIFT_NAME(init(mglJSONObject:)); ++ (instancetype)expressionWithMGLJSONObject:(nullable id)object NS_SWIFT_NAME(init(mglJSONObject:)); /** An equivalent Foundation object that can be serialized as JSON. diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index 9dad00e56e..026d8bec02 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -823,9 +823,14 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { minimum = [NSExpression expressionWithMGLJSONObject:valueExpression]; } } - NSExpression *stopExpression = [NSExpression expressionForConstantValue:stops]; - return [NSExpression expressionForFunction:@"mgl_step:from:stops:" - arguments:@[inputExpression, minimum, stopExpression]]; + + NSAssert(minimum, @"minimum should be non-nil"); + if (minimum) { + NSExpression *stopExpression = [NSExpression expressionForConstantValue:stops]; + return [NSExpression expressionForFunction:@"mgl_step:from:stops:" + arguments:@[inputExpression, minimum, stopExpression]]; + } + } else if ([op isEqualToString:@"zoom"]) { return NSExpression.zoomLevelVariableExpression; } else if ([op isEqualToString:@"heatmap-density"]) { @@ -1030,7 +1035,11 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { expressionObject = @[@"get", pathComponent]; } } - return expressionObject; + + NSAssert(expressionObject.count > 0, @"expressionObject should be non-empty"); + + // Return a non-null value to quieten static analysis + return expressionObject ?: @[]; } case NSFunctionExpressionType: { diff --git a/platform/darwin/src/NSExpression+MGLPrivateAdditions.h b/platform/darwin/src/NSExpression+MGLPrivateAdditions.h index 4ef49a2d15..54bc9068f4 100644 --- a/platform/darwin/src/NSExpression+MGLPrivateAdditions.h +++ b/platform/darwin/src/NSExpression+MGLPrivateAdditions.h @@ -13,8 +13,8 @@ NS_ASSUME_NONNULL_BEGIN @interface NSObject (MGLExpressionAdditions) -- (NSNumber *)mgl_number; -- (NSNumber *)mgl_numberWithFallbackValues:(id)fallbackValue, ... NS_REQUIRES_NIL_TERMINATION; +- (nullable NSNumber *)mgl_number; +- (nullable NSNumber *)mgl_numberWithFallbackValues:(id)fallbackValue, ... NS_REQUIRES_NIL_TERMINATION; @end diff --git a/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h b/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h index 1828009678..051a2775a1 100644 --- a/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h +++ b/platform/darwin/src/NSPredicate+MGLPrivateAdditions.h @@ -10,15 +10,15 @@ NS_ASSUME_NONNULL_BEGIN - (mbgl::style::Filter)mgl_filter; -+ (instancetype)mgl_predicateWithFilter:(mbgl::style::Filter)filter; ++ (nullable instancetype)mgl_predicateWithFilter:(mbgl::style::Filter)filter; @end @interface NSPredicate (MGLExpressionAdditions) -- (id)mgl_if:(id)firstValue, ...; +- (nullable id)mgl_if:(id)firstValue, ...; -- (id)mgl_match:(NSExpression *)firstCase, ...; +- (nullable id)mgl_match:(NSExpression *)firstCase, ...; @end |