@@ -417,6 +417,7 @@ fn5();
417417
418418 interface VerifierAndWithRefs {
419419 withRefs : boolean ;
420+ disableSourceOfProjectReferenceRedirect ?: true ;
420421 verifier : ( withRefs : boolean ) => readonly DocumentPositionMapperVerifier [ ] ;
421422 }
422423
@@ -426,19 +427,30 @@ fn5();
426427 interface OpenTsFile extends VerifierAndWithRefs {
427428 onHostCreate ?: ( host : TestServerHost ) => void ;
428429 }
429- function openTsFile ( { withRefs, verifier, onHostCreate } : OpenTsFile ) {
430+ function openTsFile ( { withRefs, disableSourceOfProjectReferenceRedirect , verifier, onHostCreate } : OpenTsFile ) {
430431 const host = createHost ( files , [ mainConfig . path ] ) ;
431432 if ( ! withRefs ) {
432433 // Erase project reference
433434 host . writeFile ( mainConfig . path , JSON . stringify ( {
434435 compilerOptions : { composite : true , declarationMap : true }
435436 } ) ) ;
436437 }
438+ else if ( disableSourceOfProjectReferenceRedirect ) {
439+ // Erase project reference
440+ host . writeFile ( mainConfig . path , JSON . stringify ( {
441+ compilerOptions : {
442+ composite : true ,
443+ declarationMap : true ,
444+ disableSourceOfProjectReferenceRedirect : ! ! disableSourceOfProjectReferenceRedirect
445+ } ,
446+ references : [ { path : "../dependency" } ]
447+ } ) ) ;
448+ }
437449 if ( onHostCreate ) {
438450 onHostCreate ( host ) ;
439451 }
440452 const session = createSession ( host ) ;
441- const verifiers = verifier ( withRefs ) ;
453+ const verifiers = verifier ( withRefs && ! disableSourceOfProjectReferenceRedirect ) ;
442454 openFilesForSession ( [ ...openFiles ( verifiers ) , randomFile ] , session ) ;
443455 return { host, session, verifiers } ;
444456 }
@@ -786,9 +798,9 @@ fn5();
786798 } ) ;
787799 }
788800
789- function verifyScenarioWorker ( { mainScenario, verifier } : VerifyScenario , withRefs : boolean ) {
801+ function verifyScenarioWorker ( { mainScenario, verifier } : VerifyScenario , withRefs : boolean , disableSourceOfProjectReferenceRedirect ?: true ) {
790802 it ( mainScenario , ( ) => {
791- const { host, session, verifiers } = openTsFile ( { withRefs, verifier } ) ;
803+ const { host, session, verifiers } = openTsFile ( { withRefs, disableSourceOfProjectReferenceRedirect , verifier } ) ;
792804 checkProject ( session , verifiers ) ;
793805 verifyScenarioAndScriptInfoCollection ( session , host , verifiers , "main" ) ;
794806 } ) ;
@@ -798,6 +810,7 @@ fn5();
798810 scenarioName : "when usage file changes, document position mapper doesnt change" ,
799811 verifier,
800812 withRefs,
813+ disableSourceOfProjectReferenceRedirect,
801814 change : ( _host , session , verifiers ) => verifiers . forEach (
802815 verifier => session . executeCommandSeq < protocol . ChangeRequest > ( {
803816 command : protocol . CommandTypes . Change ,
@@ -819,6 +832,7 @@ fn5();
819832 scenarioName : "when dependency .d.ts changes, document position mapper doesnt change" ,
820833 verifier,
821834 withRefs,
835+ disableSourceOfProjectReferenceRedirect,
822836 change : host => host . writeFile (
823837 dtsLocation ,
824838 host . readFile ( dtsLocation ) ! . replace (
@@ -835,6 +849,7 @@ fn5();
835849 scenarioName : "when dependency file's map changes" ,
836850 verifier,
837851 withRefs,
852+ disableSourceOfProjectReferenceRedirect,
838853 change : host => host . writeFile (
839854 dtsMapLocation ,
840855 `{"version":3,"file":"FnS.d.ts","sourceRoot":"","sources":["../dependency/FnS.ts"],"names":[],"mappings":"AAAA,wBAAgB,GAAG,SAAM;AACzB,wBAAgB,GAAG,SAAM;AACzB,wBAAgB,GAAG,SAAM;AACzB,wBAAgB,GAAG,SAAM;AACzB,wBAAgB,GAAG,SAAM;AACzB,eAAO,MAAM,CAAC,KAAK,CAAC"}`
@@ -846,6 +861,7 @@ fn5();
846861 scenarioName : "with depedency files map file" ,
847862 verifier,
848863 withRefs,
864+ disableSourceOfProjectReferenceRedirect,
849865 fileLocation : dtsMapLocation ,
850866 fileNotPresentKey : "noMap" ,
851867 fileCreatedKey : "mapFileCreated" ,
@@ -856,14 +872,15 @@ fn5();
856872 scenarioName : "with depedency .d.ts file" ,
857873 verifier,
858874 withRefs,
875+ disableSourceOfProjectReferenceRedirect,
859876 fileLocation : dtsLocation ,
860877 fileNotPresentKey : "noDts" ,
861878 fileCreatedKey : "dtsFileCreated" ,
862879 fileDeletedKey : "dtsFileDeleted" ,
863880 noDts : true
864881 } ) ;
865882
866- if ( withRefs ) {
883+ if ( withRefs && ! disableSourceOfProjectReferenceRedirect ) {
867884 verifyScenarioWithChanges ( {
868885 scenarioName : "when defining project source changes" ,
869886 verifier,
@@ -907,6 +924,9 @@ ${dependencyTs.content}`);
907924 describe ( "when main tsconfig has project reference" , ( ) => {
908925 verifyScenarioWorker ( scenario , /*withRefs*/ true ) ;
909926 } ) ;
927+ describe ( "when main tsconfig has but has disableSourceOfProjectReferenceRedirect" , ( ) => {
928+ verifyScenarioWorker ( scenario , /*withRefs*/ true ) ;
929+ } ) ;
910930 }
911931
912932 describe ( "from project that uses dependency" , ( ) => {
0 commit comments