@@ -169,6 +169,8 @@ fn5();
169
169
expectedResponse : Response ;
170
170
expectedResponseNoMap ?: Response ;
171
171
expectedResponseNoDts ?: Response ;
172
+ requestDependencyChange ?: Partial < Req > ;
173
+ expectedResponseDependencyChange : Response ;
172
174
}
173
175
function gotoDefintinionFromMainTs ( fn : number ) : SessionAction < protocol . DefinitionAndBoundSpanRequest , protocol . DefinitionInfoAndBoundSpan > {
174
176
const textSpan = usageSpan ( fn ) ;
@@ -200,6 +202,11 @@ fn5();
200
202
// To import declaration
201
203
definitions : [ { file : mainTs . path , ...importSpan ( fn ) } ] ,
202
204
textSpan
205
+ } ,
206
+ expectedResponseDependencyChange : {
207
+ // Definition on fn + 1 line
208
+ definitions : [ { file : dependencyTs . path , ...declarationSpan ( fn + 1 ) } ] ,
209
+ textSpan
203
210
}
204
211
} ;
205
212
}
@@ -227,6 +234,8 @@ fn5();
227
234
function renameFromDependencyTs ( fn : number ) : SessionAction < protocol . RenameRequest , protocol . RenameResponseBody > {
228
235
const defSpan = declarationSpan ( fn ) ;
229
236
const { contextStart : _ , contextEnd : _1 , ...triggerSpan } = defSpan ;
237
+ const defSpanPlusOne = declarationSpan ( fn + 1 ) ;
238
+ const { contextStart : _2 , contextEnd : _3 , ...triggerSpanPlusOne } = defSpanPlusOne ;
230
239
return {
231
240
reqName : "rename" ,
232
241
request : {
@@ -246,12 +255,30 @@ fn5();
246
255
locs : [
247
256
{ file : dependencyTs . path , locs : [ defSpan ] }
248
257
]
258
+ } ,
259
+ requestDependencyChange : {
260
+ command : protocol . CommandTypes . Rename ,
261
+ arguments : { file : dependencyTs . path , ...triggerSpanPlusOne . start }
262
+ } ,
263
+ expectedResponseDependencyChange : {
264
+ info : {
265
+ canRename : true ,
266
+ fileToRename : undefined ,
267
+ displayName : `fn${ fn } ` ,
268
+ fullDisplayName : `"${ dependecyLocation } /FnS".fn${ fn } ` ,
269
+ kind : ScriptElementKind . functionElement ,
270
+ kindModifiers : "export" ,
271
+ triggerSpan : triggerSpanPlusOne
272
+ } ,
273
+ locs : [
274
+ { file : dependencyTs . path , locs : [ defSpanPlusOne ] }
275
+ ]
249
276
}
250
277
} ;
251
278
}
252
279
253
280
function renameFromDependencyTsWithBothProjectsOpen ( fn : number ) : SessionAction < protocol . RenameRequest , protocol . RenameResponseBody > {
254
- const { reqName, request, expectedResponse } = renameFromDependencyTs ( fn ) ;
281
+ const { reqName, request, expectedResponse, expectedResponseDependencyChange , requestDependencyChange } = renameFromDependencyTs ( fn ) ;
255
282
const { info, locs } = expectedResponse ;
256
283
return {
257
284
reqName,
@@ -271,7 +298,21 @@ fn5();
271
298
} ,
272
299
// Only dependency result
273
300
expectedResponseNoMap : expectedResponse ,
274
- expectedResponseNoDts : expectedResponse
301
+ expectedResponseNoDts : expectedResponse ,
302
+ requestDependencyChange,
303
+ expectedResponseDependencyChange : {
304
+ info : expectedResponseDependencyChange . info ,
305
+ locs : [
306
+ expectedResponseDependencyChange . locs [ 0 ] ,
307
+ {
308
+ file : mainTs . path ,
309
+ locs : [
310
+ importSpan ( fn ) ,
311
+ usageSpan ( fn )
312
+ ]
313
+ }
314
+ ]
315
+ }
275
316
} ;
276
317
}
277
318
@@ -633,6 +674,36 @@ fn5();
633
674
verifyMainScenarioAndScriptInfoCollectionWithNoDts ,
634
675
/*noDts*/ true
635
676
) ;
677
+
678
+ it ( "when defining project source changes" , ( ) => {
679
+ const { host, session } = openTsFile ( ) ;
680
+
681
+ // First action
682
+ firstAction ( session ) ;
683
+
684
+ // Make change, without rebuild of solution
685
+ if ( contains ( openInfos , dependencyTs . path ) ) {
686
+ session . executeCommandSeq < protocol . ChangeRequest > ( {
687
+ command : protocol . CommandTypes . Change ,
688
+ arguments : {
689
+ file : dependencyTs . path , line : 1 , offset : 1 , endLine : 1 , endOffset : 1 , insertString : `function fooBar() { }
690
+ ` }
691
+ } ) ;
692
+ }
693
+ else {
694
+ host . writeFile ( dependencyTs . path , `function fooBar() { }
695
+ ${ dependencyTs . content } `) ;
696
+ }
697
+ host . runQueuedTimeoutCallbacks ( ) ;
698
+
699
+ for ( const actionGetter of actionGetters ) {
700
+ for ( let fn = 1 ; fn <= 5 ; fn ++ ) {
701
+ const { reqName, request, requestDependencyChange, expectedResponseDependencyChange } = actionGetter ( fn ) ;
702
+ const { response } = session . executeCommandSeq ( requestDependencyChange || request ) ;
703
+ assert . deepEqual ( response , expectedResponseDependencyChange , `Failed on ${ reqName } ` ) ;
704
+ }
705
+ }
706
+ } ) ;
636
707
}
637
708
638
709
const usageVerifier : DocumentPositionMapperVerifier = {
0 commit comments