@@ -656,7 +656,8 @@ namespace ts.projectSystem {
656656 } ;
657657
658658 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 } } ) ;
660661 const upperCaseConfigFilePath = combinePaths ( getDirectoryPath ( config . path ) . toUpperCase ( ) , getBaseFileName ( config . path ) ) ;
661662 service . openExternalProject ( < protocol . ExternalProject > {
662663 projectFileName : "/a/b/project.csproj" ,
@@ -670,7 +671,7 @@ namespace ts.projectSystem {
670671 checkProjectActualFiles ( project , emptyArray ) ;
671672 }
672673 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
674675 checkProjectActualFiles ( project , [ upperCaseConfigFilePath ] ) ;
675676 }
676677
@@ -2978,7 +2979,8 @@ namespace ts.projectSystem {
29782979 } ;
29792980 const projectFileName = "/user/someuser/project/WebApplication6.csproj" ;
29802981 const host = createServerHost ( [ libFile , site , configFile ] ) ;
2981- const projectService = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
2982+ const projectService = createProjectService ( host ) ;
2983+ projectService . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
29822984
29832985 const externalProject : protocol . ExternalProject = {
29842986 projectFileName,
@@ -3341,8 +3343,12 @@ namespace ts.projectSystem {
33413343 } ;
33423344
33433345 const host = createServerHost ( [ file1 , file2 , tsconfig ] ) ;
3344- const session = createSession ( host , { lazyConfiguredProjectsFromExternalProject } ) ;
3346+ const session = createSession ( host ) ;
33453347 const projectService = session . getProjectService ( ) ;
3348+ session . executeCommandSeq < protocol . ConfigureRequest > ( {
3349+ command : protocol . CommandTypes . Configure ,
3350+ arguments : { preferences : { lazyConfiguredProjectsFromExternalProject } }
3351+ } ) ;
33463352
33473353 // Configure the deferred extension.
33483354 const extraFileExtensions = [ { extension : ".deferred" , scriptKind : ScriptKind . Deferred , isMixedContent : true } ] ;
@@ -3995,7 +4001,8 @@ namespace ts.projectSystem {
39954001 content : ""
39964002 } ;
39974003 const host = createServerHost ( [ f1 , f2 ] ) ;
3998- const projectService = createProjectService ( host , /*parameters*/ undefined , { lazyConfiguredProjectsFromExternalProject } ) ;
4004+ const projectService = createProjectService ( host ) ;
4005+ projectService . setHostConfiguration ( { preferences : { lazyConfiguredProjectsFromExternalProject } } ) ;
39994006
40004007 // open external project
40014008 const projectName = "/a/b/proj1" ;
@@ -4064,7 +4071,8 @@ namespace ts.projectSystem {
40644071 content : "{}"
40654072 } ;
40664073 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 } } ) ;
40684076
40694077 // open external project
40704078 const projectName = "/a/b/proj1" ;
@@ -4233,6 +4241,47 @@ namespace ts.projectSystem {
42334241 assert . isTrue ( project . hasOpenRef ( ) ) ; // f
42344242 assert . isFalse ( project . isClosed ( ) ) ;
42354243 } ) ;
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+ } ) ;
42364285 } ) ;
42374286
42384287 describe ( "tsserverProjectSystem prefer typings to js" , ( ) => {
0 commit comments