@@ -656,7 +656,8 @@ namespace ts.projectSystem {
656
656
} ;
657
657
658
658
const host = createServerHost ( [ f1 , config ] , { useCaseSensitiveFileNames : false } ) ;
659
- const service = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
659
+ const service = createProjectService ( host ) ;
660
+ service . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
660
661
const upperCaseConfigFilePath = combinePaths ( getDirectoryPath ( config . path ) . toUpperCase ( ) , getBaseFileName ( config . path ) ) ;
661
662
service . openExternalProject ( < protocol . ExternalProject > {
662
663
projectFileName : "/a/b/project.csproj" ,
@@ -670,7 +671,7 @@ namespace ts.projectSystem {
670
671
checkProjectActualFiles ( project , emptyArray ) ;
671
672
}
672
673
else {
673
- assert . equal ( project . pendingReload , ConfigFileProgramReloadLevel . None ) ; // External project referenced configured project pending to be reloaded
674
+ assert . equal ( project . pendingReload , ConfigFileProgramReloadLevel . None ) ; // External project referenced configured project loaded
674
675
checkProjectActualFiles ( project , [ upperCaseConfigFilePath ] ) ;
675
676
}
676
677
@@ -2978,7 +2979,8 @@ namespace ts.projectSystem {
2978
2979
} ;
2979
2980
const projectFileName = "/user/someuser/project/WebApplication6.csproj" ;
2980
2981
const host = createServerHost ( [ libFile , site , configFile ] ) ;
2981
- const projectService = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
2982
+ const projectService = createProjectService ( host ) ;
2983
+ projectService . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
2982
2984
2983
2985
const externalProject : protocol . ExternalProject = {
2984
2986
projectFileName,
@@ -3341,8 +3343,12 @@ namespace ts.projectSystem {
3341
3343
} ;
3342
3344
3343
3345
const host = createServerHost ( [ file1 , file2 , tsconfig ] ) ;
3344
- const session = createSession ( host , { lazyConfiguredProjectsFromExternalProject } ) ;
3346
+ const session = createSession ( host ) ;
3345
3347
const projectService = session . getProjectService ( ) ;
3348
+ session . executeCommandSeq < protocol . ConfigureRequest > ( {
3349
+ command : protocol . CommandTypes . Configure ,
3350
+ arguments : { preferences : { lazyConfiguredProjectsFromExternalProject } }
3351
+ } ) ;
3346
3352
3347
3353
// Configure the deferred extension.
3348
3354
const extraFileExtensions = [ { extension : ".deferred" , scriptKind : ScriptKind . Deferred , isMixedContent : true } ] ;
@@ -3995,7 +4001,8 @@ namespace ts.projectSystem {
3995
4001
content : ""
3996
4002
} ;
3997
4003
const host = createServerHost ( [ f1 , f2 ] ) ;
3998
- const projectService = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
4004
+ const projectService = createProjectService ( host ) ;
4005
+ projectService . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
3999
4006
4000
4007
// open external project
4001
4008
const projectName = "/a/b/proj1" ;
@@ -4064,7 +4071,8 @@ namespace ts.projectSystem {
4064
4071
content : "{}"
4065
4072
} ;
4066
4073
const host = createServerHost ( [ f1 , cLib , cTsconfig , dLib , dTsconfig ] ) ;
4067
- const projectService = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
4074
+ const projectService = createProjectService ( host ) ;
4075
+ projectService . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
4068
4076
4069
4077
// open external project
4070
4078
const projectName = "/a/b/proj1" ;
@@ -4233,6 +4241,47 @@ namespace ts.projectSystem {
4233
4241
assert . isTrue ( project . hasOpenRef ( ) ) ; // f
4234
4242
assert . isFalse ( project . isClosed ( ) ) ;
4235
4243
} ) ;
4244
+
4245
+ it ( "handles loads existing configured projects of external projects when lazyConfiguredProjectsFromExternalProject is disabled" , ( ) => {
4246
+ const f1 = {
4247
+ path : "/a/b/app.ts" ,
4248
+ content : "let x = 1"
4249
+ } ;
4250
+ const config = {
4251
+ path : "/a/b/tsconfig.json" ,
4252
+ content : JSON . stringify ( { } )
4253
+ } ;
4254
+ const projectFileName = "/a/b/project.csproj"
4255
+ const host = createServerHost ( [ f1 , config ] ) ;
4256
+ const service = createProjectService ( host ) ;
4257
+ service . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject : true } } ) ;
4258
+ service . openExternalProject ( < protocol . ExternalProject > {
4259
+ projectFileName,
4260
+ rootFiles : toExternalFiles ( [ f1 . path , config . path ] ) ,
4261
+ options : { }
4262
+ } ) ;
4263
+ service . checkNumberOfProjects ( { configuredProjects : 1 } ) ;
4264
+ const project = service . configuredProjects . get ( config . path ) ! ;
4265
+ assert . equal ( project . pendingReload , ConfigFileProgramReloadLevel . Full ) ; // External project referenced configured project pending to be reloaded
4266
+ checkProjectActualFiles ( project , emptyArray ) ;
4267
+
4268
+ service . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject : false } } ) ;
4269
+ assert . equal ( project . pendingReload , ConfigFileProgramReloadLevel . None ) ; // External project referenced configured project loaded
4270
+ checkProjectActualFiles ( project , [ config . path , f1 . path ] ) ;
4271
+
4272
+ service . closeExternalProject ( projectFileName ) ;
4273
+ service . checkNumberOfProjects ( { } ) ;
4274
+
4275
+ service . openExternalProject ( < protocol . ExternalProject > {
4276
+ projectFileName,
4277
+ rootFiles : toExternalFiles ( [ f1 . path , config . path ] ) ,
4278
+ options : { }
4279
+ } ) ;
4280
+ service . checkNumberOfProjects ( { configuredProjects : 1 } ) ;
4281
+ const project2 = service . configuredProjects . get ( config . path ) ! ;
4282
+ assert . equal ( project2 . pendingReload , ConfigFileProgramReloadLevel . None ) ; // External project referenced configured project loaded
4283
+ checkProjectActualFiles ( project2 , [ config . path , f1 . path ] ) ;
4284
+ } ) ;
4236
4285
} ) ;
4237
4286
4238
4287
describe ( "tsserverProjectSystem prefer typings to js" , ( ) => {
0 commit comments