@@ -646,6 +646,15 @@ describe('ParameterResolver', () => {
646646 } ) )
647647 . toEqual ( 'hash:{"a":"b"}' ) ;
648648 } ) ;
649+
650+ it ( 'should hash index' , ( ) => {
651+ expect ( loader . hashParameterRangeUnresolved ( {
652+ type : 'indexed' ,
653+ object : { type : 'raw' , value : 'boolean' } ,
654+ index : { type : 'raw' , value : 'string' } ,
655+ } ) )
656+ . toEqual ( 'indexed:[raw:boolean;raw:string]' ) ;
657+ } ) ;
649658 } ) ;
650659
651660 describe ( 'resolveRange' , ( ) => {
@@ -1388,6 +1397,49 @@ class MyInnerClass<AInner, BInner> {
13881397 ] ,
13891398 } ) ;
13901399 } ) ;
1400+
1401+ it ( 'should handle an indexed range over a generic' , async ( ) => {
1402+ expect ( await loader . resolveRange ( {
1403+ type : 'indexed' ,
1404+ object : {
1405+ type : 'genericTypeReference' ,
1406+ value : 'AOuter' ,
1407+ } ,
1408+ index : { type : 'literal' , value : 'keya' } ,
1409+ } , classReference , { } , true , new Set ( ) ) ) . toMatchObject ( {
1410+ type : 'indexed' ,
1411+ object : {
1412+ type : 'genericTypeReference' ,
1413+ value : 'AOuter' ,
1414+ } ,
1415+ index : { type : 'literal' , value : 'keya' } ,
1416+ } ) ;
1417+ } ) ;
1418+
1419+ it ( 'should handle an indexed range over a class' , async ( ) => {
1420+ resolutionContext . contentsOverrides = {
1421+ 'A.d.ts' : `export * from './MyClass'` ,
1422+ 'MyClass.d.ts' : `export class MyClass{}` ,
1423+ } ;
1424+
1425+ expect ( await loader . resolveRange ( {
1426+ type : 'indexed' ,
1427+ object : {
1428+ type : 'interface' ,
1429+ value : 'MyClass' ,
1430+ genericTypeParameterInstantiations : [ ] ,
1431+ origin : classReference ,
1432+ } ,
1433+ index : { type : 'literal' , value : 'keya' } ,
1434+ } , classReference , { } , true , new Set ( ) ) ) . toMatchObject ( {
1435+ type : 'indexed' ,
1436+ object : {
1437+ type : 'class' ,
1438+ value : { localName : 'MyClass' , fileName : 'MyClass' } ,
1439+ } ,
1440+ index : { type : 'literal' , value : 'keya' } ,
1441+ } ) ;
1442+ } ) ;
13911443 } ) ;
13921444
13931445 describe ( 'resolveRangeInterface' , ( ) => {
0 commit comments