fix(compiler-cli): report all diagnostic error messages (#19886)
This fixes a problem introduced in 8d45fefc313aebd0db7b320a1d324c2d4bebd268 which modified how diagnostic error messages are reported for structural metadata errors causing some of the diagnostics to be lost. PR Close #19886
This commit is contained in:
		
							parent
							
								
									d3211a2468
								
							
						
					
					
						commit
						a0ae120093
					
				| @ -510,21 +510,25 @@ class AngularCompilerProgram implements Program { | ||||
|     if (isSyntaxError(e)) { | ||||
|       const parserErrors = getParseErrors(e); | ||||
|       if (parserErrors && parserErrors.length) { | ||||
|         this._structuralDiagnostics = | ||||
|             parserErrors.map<Diagnostic>(e => ({ | ||||
|         this._structuralDiagnostics = [ | ||||
|           ...(this._structuralDiagnostics || []), | ||||
|           ...parserErrors.map<Diagnostic>(e => ({ | ||||
|                                             messageText: e.contextualMessage(), | ||||
|                                             category: ts.DiagnosticCategory.Error, | ||||
|                                             span: e.span, | ||||
|                                             source: SOURCE, | ||||
|                                             code: DEFAULT_ERROR_CODE | ||||
|                                          })); | ||||
|                                           })) | ||||
|         ]; | ||||
|       } else { | ||||
|         this._structuralDiagnostics = [{ | ||||
|         this._structuralDiagnostics = [ | ||||
|           ...(this._structuralDiagnostics || []), { | ||||
|             messageText: e.message, | ||||
|             category: ts.DiagnosticCategory.Error, | ||||
|             source: SOURCE, | ||||
|             code: DEFAULT_ERROR_CODE | ||||
|         }]; | ||||
|           } | ||||
|         ]; | ||||
|       } | ||||
|       return null; | ||||
|     } | ||||
|  | ||||
| @ -1391,5 +1391,44 @@ describe('ngc transformer command-line', () => { | ||||
|           main(['-p', path.join(basePath, 'src/tsconfig.json')], message => messages.push(message)); | ||||
|       expect(exitCode).toBe(0, 'Compile failed unexpectedly.\n  ' + messages.join('\n  ')); | ||||
|     }); | ||||
| 
 | ||||
|     it('should emit all structural errors', () => { | ||||
|       write('src/tsconfig.json', `{
 | ||||
|         "extends": "../tsconfig-base.json", | ||||
|         "files": ["test-module.ts"] | ||||
|       }`);
 | ||||
|       write('src/lib/indirect2.ts', ` | ||||
|         declare var f: any; | ||||
|         export const t2 = f\`<p>hello</p>\`;
 | ||||
|       `);
 | ||||
|       write('src/lib/indirect1.ts', ` | ||||
|         import {t2} from './indirect2'; | ||||
|         export const t1 = t2 + ' '; | ||||
|       `);
 | ||||
|       write('src/lib/test.component.ts', ` | ||||
|         import {Component} from '@angular/core'; | ||||
|         import {t1} from './indirect1'; | ||||
| 
 | ||||
|         @Component({ | ||||
|           template: t1 | ||||
|         }) | ||||
|         export class TestComponent {} | ||||
|       `);
 | ||||
|       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(1, 'Compile was expected to fail'); | ||||
|       expect(messages).toEqual([ | ||||
|         'Error: Error: Error encountered resolving symbol values statically. Tagged template expressions are not supported in metadata (position 3:27 in the original .ts file)\n' + | ||||
|         'Error: No template specified for component TestComponent\n' | ||||
|       ]); | ||||
|     }); | ||||
|   }); | ||||
| }); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user