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]
 | 
			
		||||
            {{#discriminator}}
 | 
			
		||||
            // 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)
 | 
			
		||||
            }
 | 
			
		||||
            {{/discriminator}}
 | 
			
		||||
@ -197,7 +197,9 @@ class Decoders {
 | 
			
		||||
            {{^unwrapRequired}}
 | 
			
		||||
            let result = instance == nil ? {{classname}}() : instance as! {{classname}}
 | 
			
		||||
            {{#parent}}
 | 
			
		||||
            if decoders["\({{parent}}.self)"] != nil {
 | 
			
		||||
              _ = Decoders.decode(clazz: {{parent}}.self, source: source, instance: result)
 | 
			
		||||
            }
 | 
			
		||||
            {{/parent}}
 | 
			
		||||
            {{#allVars}}{{#isEnum}}
 | 
			
		||||
            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
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
            // 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)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -289,7 +289,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Cat() : instance as! Cat
 | 
			
		||||
            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.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
 | 
			
		||||
@ -353,7 +355,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Dog() : instance as! Dog
 | 
			
		||||
            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.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
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
            // 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)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -289,7 +289,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Cat() : instance as! Cat
 | 
			
		||||
            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.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
 | 
			
		||||
@ -353,7 +355,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Dog() : instance as! Dog
 | 
			
		||||
            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.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
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
            // 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)
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -289,7 +289,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Cat() : instance as! Cat
 | 
			
		||||
            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.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
 | 
			
		||||
@ -353,7 +355,9 @@ class Decoders {
 | 
			
		||||
            let sourceDictionary = source as! [AnyHashable: Any]
 | 
			
		||||
 | 
			
		||||
            let result = instance == nil ? Dog() : instance as! Dog
 | 
			
		||||
            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.color = Decoders.decodeOptional(clazz: String.self, source: sourceDictionary["color"] as AnyObject?)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user