forked from loafle/openapi-generator-original
fix(swift3): fix infinite loop with inheritance and check if parent decoder exists before calling (#5416)
This commit is contained in:
parent
6359c064f3
commit
edb80df0ba
@ -179,7 +179,7 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
{{#discriminator}}
|
{{#discriminator}}
|
||||||
// Check discriminator to support inheritance
|
// Check discriminator to support inheritance
|
||||||
if let discriminator = sourceDictionary["{{discriminator}}"] as? String, discriminator != "{{classname}}"{
|
if let discriminator = sourceDictionary["{{discriminator}}"] as? String, instance == nil && discriminator != "{{classname}}" {
|
||||||
return Decoders.decode(clazz: {{classname}}.self, discriminator: discriminator, source: source)
|
return Decoders.decode(clazz: {{classname}}.self, discriminator: discriminator, source: source)
|
||||||
}
|
}
|
||||||
{{/discriminator}}
|
{{/discriminator}}
|
||||||
@ -197,7 +197,9 @@ class Decoders {
|
|||||||
{{^unwrapRequired}}
|
{{^unwrapRequired}}
|
||||||
let result = instance == nil ? {{classname}}() : instance as! {{classname}}
|
let result = instance == nil ? {{classname}}() : instance as! {{classname}}
|
||||||
{{#parent}}
|
{{#parent}}
|
||||||
_ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: result)
|
if decoders["\({{parent}}.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: result)
|
||||||
|
}
|
||||||
{{/parent}}
|
{{/parent}}
|
||||||
{{#allVars}}{{#isEnum}}
|
{{#allVars}}{{#isEnum}}
|
||||||
if let {{name}} = sourceDictionary["{{baseName}}"] as? {{datatype}} { {{^isContainer}}
|
if let {{name}} = sourceDictionary["{{baseName}}"] as? {{datatype}} { {{^isContainer}}
|
||||||
|
@ -173,7 +173,7 @@ class Decoders {
|
|||||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
// Check discriminator to support inheritance
|
// Check discriminator to support inheritance
|
||||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,7 +289,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Cat() : instance as! Cat
|
let result = instance == nil ? Cat() : instance as! Cat
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
@ -353,7 +355,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Dog() : instance as! Dog
|
let result = instance == nil ? Dog() : instance as! Dog
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
|
@ -173,7 +173,7 @@ class Decoders {
|
|||||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
// Check discriminator to support inheritance
|
// Check discriminator to support inheritance
|
||||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,7 +289,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Cat() : instance as! Cat
|
let result = instance == nil ? Cat() : instance as! Cat
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
@ -353,7 +355,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Dog() : instance as! Dog
|
let result = instance == nil ? Dog() : instance as! Dog
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
|
@ -173,7 +173,7 @@ class Decoders {
|
|||||||
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
Decoders.addDecoder(clazz: Animal.self) { (source: AnyObject, instance: AnyObject?) -> Animal in
|
||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
// Check discriminator to support inheritance
|
// Check discriminator to support inheritance
|
||||||
if let discriminator = sourceDictionary["className"] as? String, discriminator != "Animal"{
|
if let discriminator = sourceDictionary["className"] as? String, instance == nil && discriminator != "Animal" {
|
||||||
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
return Decoders.decode(clazz: Animal.self, discriminator: discriminator, source: source)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,7 +289,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Cat() : instance as! Cat
|
let result = instance == nil ? Cat() : instance as! Cat
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
@ -353,7 +355,9 @@ class Decoders {
|
|||||||
let sourceDictionary = source as! [AnyHashable: Any]
|
let sourceDictionary = source as! [AnyHashable: Any]
|
||||||
|
|
||||||
let result = instance == nil ? Dog() : instance as! Dog
|
let result = instance == nil ? Dog() : instance as! Dog
|
||||||
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
if decoders["\(Animal.self)"] != nil {
|
||||||
|
_ = Decoders.decode(clazz: Animal.self, source: source, instance: result)
|
||||||
|
}
|
||||||
|
|
||||||
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
result.className = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["className"] as AnyObject?)
|
||||||
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
result.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user