diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2018-07-05 16:50:36 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2018-07-09 16:03:03 -0700 |
commit | ec8ac3c64fd4a89b0744da970eb221af3567707c (patch) | |
tree | f1b7bd74cbbd9dbf847c0ba6355dce4116fc3b86 /platform/darwin/src/NSExpression+MGLAdditions.mm | |
parent | f11ab91fc448aca1155b42a53aaa77cfce62f412 (diff) | |
download | qtlocation-mapboxgl-ec8ac3c64fd4a89b0744da970eb221af3567707c.tar.gz |
[ios, macos] Allow unwrapped arguments in match expressions
Diffstat (limited to 'platform/darwin/src/NSExpression+MGLAdditions.mm')
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index d03d7dbaec..5cb69d11dc 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -1367,11 +1367,15 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { for (NSUInteger index = minimumIndex; index < arguments.count; index++) { NSArray *argumentObject = arguments[index].mgl_jsonExpressionObject; // match operators with arrays as matching values should not parse arrays using the literal operator. - if (index > 0 && index < arguments.count - 1 && !(index % 2 == 0) - && (arguments[index].expressionType == NSAggregateExpressionType || - (arguments[index].expressionType == NSConstantValueExpressionType && [arguments[index].constantValue isKindOfClass:[NSArray class]]))) { - - argumentObject = argumentObject.count == 2 ? argumentObject[1] : argumentObject; + if (index > 0 && index < arguments.count - 1 && !(index % 2 == 0)) { + NSExpression *expression = arguments[index]; + if (![expression isKindOfClass:[NSExpression class]]) { + expression = [NSExpression expressionForConstantValue:expression]; + } + if (expression.expressionType == NSAggregateExpressionType || + (expression.expressionType == NSConstantValueExpressionType && [expression.constantValue isKindOfClass:[NSArray class]])) { + argumentObject = argumentObject.count == 2 ? argumentObject[1] : argumentObject; + } } [expressionObject addObject:argumentObject]; } |