File tree 1 file changed +15
-6
lines changed
1 file changed +15
-6
lines changed Original file line number Diff line number Diff line change @@ -183,19 +183,28 @@ export class SpecManager {
183
183
let globalDefs = this . _schema . definitions || { } ;
184
184
let res :DescendantInfo [ ] = [ ] ;
185
185
let extendedDiscriminatorProp = definition [ 'x-extendedDiscriminator' ] ;
186
+
187
+ let pointers ;
188
+ if ( definition [ 'x-derived-from' ] ) {
189
+ // support inherited discriminator o_O
190
+ let derivedDiscriminator = definition [ 'x-derived-from' ] . filter ( ptr => {
191
+ if ( ! ptr ) return false ;
192
+ let def = this . byPointer ( ptr ) ;
193
+ return def && def . discriminator ;
194
+ } ) ;
195
+ pointers = [ defPointer , ...derivedDiscriminator ] ;
196
+ } else {
197
+ pointers = [ defPointer ] ;
198
+ }
199
+
200
+
186
201
for ( let defName of Object . keys ( globalDefs ) ) {
187
202
let def = globalDefs [ defName ] ;
188
203
if ( ! def . allOf &&
189
204
! def [ 'x-derived-from' ] ) continue ;
190
205
let subTypes = def [ 'x-derived-from' ] ||
191
206
def . allOf . map ( subType => subType . _pointer || subType . $ref ) ;
192
207
193
- let pointers ;
194
- if ( definition [ 'x-derived-from' ] ) {
195
- pointers = [ defPointer , ...definition [ 'x-derived-from' ] ] ;
196
- } else {
197
- pointers = [ defPointer ] ;
198
- }
199
208
let idx = - 1 ;
200
209
201
210
for ( let ptr of pointers ) {
You can’t perform that action at this time.
0 commit comments