diff --git a/packages/compiler-cli/src/transformers/compiler_host.ts b/packages/compiler-cli/src/transformers/compiler_host.ts index 8bc19ec2d4..0b0a34b945 100644 --- a/packages/compiler-cli/src/transformers/compiler_host.ts +++ b/packages/compiler-cli/src/transformers/compiler_host.ts @@ -363,7 +363,8 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter extends genFileNames = cachedGenFiles; } else { if (!this.options.noResolve && this.shouldGenerateFilesFor(fileName)) { - genFileNames = this.codeGenerator.findGeneratedFileNames(fileName); + genFileNames = this.codeGenerator.findGeneratedFileNames(fileName).filter( + fileName => this.shouldGenerateFile(fileName).generate); } this.generatedCodeFor.set(fileName, genFileNames); } diff --git a/packages/compiler-cli/test/ngc_spec.ts b/packages/compiler-cli/test/ngc_spec.ts index 82511a33b3..8aef235c51 100644 --- a/packages/compiler-cli/test/ngc_spec.ts +++ b/packages/compiler-cli/test/ngc_spec.ts @@ -1350,4 +1350,46 @@ describe('ngc transformer command-line', () => { it('should recompile when the css file changes', expectRecompile(() => { write('greet.css', `p.greeting { color: blue }`); })); }); + + describe('regressions', () => { + // #19765 + it('should not report an error when the resolved .css file is in outside rootDir', () => { + write('src/tsconfig.json', `{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "outDir": "../dist", + "rootDir": ".", + "rootDirs": [ + ".", + "../dist" + ] + }, + "files": ["test-module.ts"] + }`); + write('src/lib/test.component.ts', ` + import {Component} from '@angular/core'; + + @Component({ + template: '
hello
', + styleUrls: ['./test.component.css'] + }) + export class TestComponent {} + `); + write('dist/dummy.txt', ''); // Force dist to be created + write('dist/lib/test.component.css', ` + p { color: blue } + `); + write('src/test-module.ts', ` + import {NgModule} from '@angular/core'; + import {TestComponent} from './lib/test.component'; + + @NgModule({declarations: [TestComponent]}) + export class TestModule {} + `); + const messages: string[] = []; + const exitCode = + main(['-p', path.join(basePath, 'src/tsconfig.json')], message => messages.push(message)); + expect(exitCode).toBe(0, 'Compile failed unexpectedly.\n ' + messages.join('\n ')); + }); + }); }); diff --git a/packages/compiler-cli/test/transformers/compiler_host_spec.ts b/packages/compiler-cli/test/transformers/compiler_host_spec.ts index b9d354bebd..b5e7e398cf 100644 --- a/packages/compiler-cli/test/transformers/compiler_host_spec.ts +++ b/packages/compiler-cli/test/transformers/compiler_host_spec.ts @@ -252,10 +252,10 @@ describe('NgCompilerHost', () => { it('should clear old generated references if the original host cached them', () => { codeGenerator.findGeneratedFileNames.and.returnValue(['/tmp/src/index.ngfactory.ts']); - const ngHost = createNgHost(); const sfText = ` ///