[Swift3] fix for unwrapRequired compilation when we have a "result" as one of the parameters (#6377)

* two fixes: 1) extra ?'s at end of some url's 2) enums not being called out w/ rawValue to get the proper string name

* update samples

* one step closer

* closer implementation

* fix unwrapRequired models when we have a parameter named result
This commit is contained in:
jaz-ah
2017-08-29 09:01:47 -07:00
committed by wing328
parent b1660c2d57
commit b0db394855
5 changed files with 607 additions and 607 deletions

View File

@@ -340,25 +340,25 @@ class Decoders {
return .failure(.typeMismatch(expected: "{{classname}}", actual: "\({{name}}Source)"))
}
{{/requiredVars}}
let result = {{classname}}({{#requiredVars}}{{^-first}}, {{/-first}}{{name}}: {{name}}{{/requiredVars}})
let _result = {{classname}}({{#requiredVars}}{{^-first}}, {{/-first}}{{name}}: {{name}}{{/requiredVars}})
{{#optionalVars}}
switch Decoders.decodeOptional(clazz: {{#isEnum}}{{^isListContainer}}{{classname}}.{{enumName}}.self{{/isListContainer}}{{#isListContainer}}Array<{{classname}}.{{enumName}}>.self{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{datatype}}}.self{{/isEnum}}, source: sourceDictionary["{{baseName}}"] as AnyObject?) {
case let .success(value): result.{{name}} = value
case let .success(value): _result.{{name}} = value
case let .failure(error): return .failure(error)
}
{{/optionalVars}}
{{/unwrapRequired}}
{{^unwrapRequired}}
let result = instance == nil ? {{classname}}() : instance as! {{classname}}
let _result = instance == nil ? {{classname}}() : instance as! {{classname}}
{{#parent}}
if decoders["\({{parent}}.self)"] != nil {
_ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: result)
_ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: _result)
}
{{/parent}}
{{#allVars}}
switch Decoders.decodeOptional(clazz: {{#isEnum}}{{^isListContainer}}{{classname}}.{{enumName}}.self{{/isListContainer}}{{#isListContainer}}Array<{{classname}}.{{enumName}}>.self{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{datatype}}}.self{{/isEnum}}, source: sourceDictionary["{{baseName}}"] as AnyObject?) {
{{#isEnum}}{{#isMapContainer}}/*{{/isMapContainer}}{{/isEnum}}
case let .success(value): result.{{name}} = value
case let .success(value): _result.{{name}} = value
case let .failure(error): return .failure(error)
{{#isEnum}}{{#isMapContainer}}*/ default: break //TODO: handle enum map scenario{{/isMapContainer}}{{/isEnum}}
}
@@ -373,13 +373,13 @@ class Decoders {
for key in propsDictionary.keys {
switch Decoders.decodeOptional(clazz: String.self, source: propsDictionary[key] as AnyObject?) {
case let .success(value): result[key] = value
case let .success(value): _result[key] = value
default: continue
}
}
{{/additionalPropertiesType}}
return .success(result)
return .success(_result)
} else {
return .failure(.typeMismatch(expected: "{{classname}}", actual: "\(source)"))
}