@@ -67,6 +67,22 @@ export interface ServicesAccessor {
6767
6868export const IInstantiationService = createDecorator < IInstantiationService > ( 'instantiationService' ) ;
6969
70+ /**
71+ * Given a list of arguments as a tuple, attempt to extract the leading, non-service arguments
72+ * to their own tuple.
73+ */
74+ type GetLeadingNonServiceArgs < Args > =
75+ Args extends [ ...BrandedService [ ] ] ? [ ]
76+ : Args extends [ infer A1 , ...BrandedService [ ] ] ? [ A1 ]
77+ : Args extends [ infer A1 , infer A2 , ...BrandedService [ ] ] ? [ A1 , A2 ]
78+ : Args extends [ infer A1 , infer A2 , infer A3 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 ]
79+ : Args extends [ infer A1 , infer A2 , infer A3 , infer A4 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 , A4 ]
80+ : Args extends [ infer A1 , infer A2 , infer A3 , infer A4 , infer A5 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 , A4 , A5 ]
81+ : Args extends [ infer A1 , infer A2 , infer A3 , infer A4 , infer A5 , infer A6 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 , A4 , A5 , A6 ]
82+ : Args extends [ infer A1 , infer A2 , infer A3 , infer A4 , infer A5 , infer A6 , infer A7 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 , A4 , A5 , A6 , A7 ]
83+ : Args extends [ infer A1 , infer A2 , infer A3 , infer A4 , infer A5 , infer A6 , infer A7 , infer A8 , ...BrandedService [ ] ] ? [ A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 ]
84+ : never ;
85+
7086export interface IInstantiationService {
7187
7288 _serviceBrand : undefined ;
@@ -85,15 +101,7 @@ export interface IInstantiationService {
85101 createInstance < A1 , A2 , A3 , A4 , A5 , A6 , A7 , T > ( descriptor : descriptors . SyncDescriptor7 < A1 , A2 , A3 , A4 , A5 , A6 , A7 , T > , a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 ) : T ;
86102 createInstance < A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , T > ( descriptor : descriptors . SyncDescriptor8 < A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , T > , a1 : A1 , a2 : A2 , a3 : A3 , a4 : A4 , a5 : A5 , a6 : A6 , a7 : A7 , a8 : A8 ) : T ;
87103
88- createInstance < T > ( ctor : IConstructorSignature0 < T > ) : T ;
89- createInstance < A1 , T > ( ctor : IConstructorSignature1 < A1 , T > , first : A1 ) : T ;
90- createInstance < A1 , A2 , T > ( ctor : IConstructorSignature2 < A1 , A2 , T > , first : A1 , second : A2 ) : T ;
91- createInstance < A1 , A2 , A3 , T > ( ctor : IConstructorSignature3 < A1 , A2 , A3 , T > , first : A1 , second : A2 , third : A3 ) : T ;
92- createInstance < A1 , A2 , A3 , A4 , T > ( ctor : IConstructorSignature4 < A1 , A2 , A3 , A4 , T > , first : A1 , second : A2 , third : A3 , fourth : A4 ) : T ;
93- createInstance < A1 , A2 , A3 , A4 , A5 , T > ( ctor : IConstructorSignature5 < A1 , A2 , A3 , A4 , A5 , T > , first : A1 , second : A2 , third : A3 , fourth : A4 , fifth : A5 ) : T ;
94- createInstance < A1 , A2 , A3 , A4 , A5 , A6 , T > ( ctor : IConstructorSignature6 < A1 , A2 , A3 , A4 , A5 , A6 , T > , first : A1 , second : A2 , third : A3 , fourth : A4 , fifth : A5 , sixth : A6 ) : T ;
95- createInstance < A1 , A2 , A3 , A4 , A5 , A6 , A7 , T > ( ctor : IConstructorSignature7 < A1 , A2 , A3 , A4 , A5 , A6 , A7 , T > , first : A1 , second : A2 , third : A3 , fourth : A4 , fifth : A5 , sixth : A6 , seventh : A7 ) : T ;
96- createInstance < A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , T > ( ctor : IConstructorSignature8 < A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , T > , first : A1 , second : A2 , third : A3 , fourth : A4 , fifth : A5 , sixth : A6 , seventh : A7 , eigth : A8 ) : T ;
104+ createInstance < Ctor extends new ( ...args : any ) => any , R extends InstanceType < Ctor > > ( t : Ctor , ...args : GetLeadingNonServiceArgs < ConstructorParameters < Ctor > > ) : R ;
97105
98106 /**
99107 *
0 commit comments