Add support for fallback object value of nil

Summary: This lets callers provide a fallback object value (e.g. `[NSNull null]`) for safety when the returned object is required to be non-null.

Reviewed By: natestedman

Differential Revision: D10504059

fbshipit-source-id: 1217755e84a927fe8cfbd0e944af55613f1f7c75
This commit is contained in:
Chris McGrath 2018-10-23 16:45:22 -07:00 committed by Facebook Github Bot
parent a30e87f5b0
commit 2b4ee9bd36

View file

@ -40,7 +40,11 @@ function formattedStringValueForIvarWithFormatSpecifier(iVarString:string, strin
return "[NSString stringWithFormat:@\"" + stringFormatSpecifier + "\", " + castString + iVarString + "]";
}
function objectValueForAttribute(attribute:ObjectSpec.Attribute):string {
function nullableObjectValueWithFallback(objectValue:string, optionalFallback:string=null) {
return (optionalFallback === null) ? objectValue : `${objectValue} ?: ${optionalFallback}`;
}
function objectValueForAttribute(attribute:ObjectSpec.Attribute, optionalFallback:string=null):string {
const iVarString:string = ObjectSpecCodeUtils.ivarForAttribute(attribute);
const type:ObjC.Type = ObjectSpecCodeUtils.computeTypeOfAttribute(attribute);
@ -49,7 +53,7 @@ function objectValueForAttribute(attribute:ObjectSpec.Attribute):string {
return formattedStringValueForIvarWithFormatSpecifier(iVarString, "%@");
},
NSObject: function() {
return iVarString;
return nullableObjectValueWithFallback(iVarString, optionalFallback);
},
BOOL: function() {
return iVarString + " ? @\"YES\" : @\"NO\"";
@ -112,7 +116,7 @@ function objectValueForAttribute(attribute:ObjectSpec.Attribute):string {
return formattedStringValueForIvarWithFormatSpecifier(iVarString, "%@");
},
unmatchedType: function() {
return "self";
return nullableObjectValueWithFallback('self', optionalFallback);
}
}, type);
}