To verify the correctness of the linker output, we leverage the existing compliance tests. The plan is to test the linker by running all compliance tests using a full round trip of pre-linking and subsequently post-linking, where the generated code should be identical to a full AOT compile. This commit adds an additional Bazel target that runs the compliance tests in partial mode. Follow-up work is required to implement the logic for running the linker round trip. PR Close #38938
		
			
				
	
	
		
			28 lines
		
	
	
		
			970 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			970 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC All Rights Reserved.
 | |
|  *
 | |
|  * Use of this source code is governed by an MIT-style license that can be
 | |
|  * found in the LICENSE file at https://angular.io/license
 | |
|  */
 | |
| import {CompileFn, doCompile, setCompileFn} from '../mock_compile';
 | |
| 
 | |
| /**
 | |
|  * A function to compile the given code in two steps:
 | |
|  *
 | |
|  * - first compile the code in partial mode
 | |
|  * - then compile the partially compiled code using the linker
 | |
|  *
 | |
|  * This should produce the same output as the full AOT compilation
 | |
|  */
 | |
| const linkedCompile: CompileFn = (data, angularFiles, options) => {
 | |
|   const result = doCompile(data, angularFiles, {...options, compilationMode: 'partial'});
 | |
|   // TODO: additional post linking
 | |
|   return result;
 | |
| };
 | |
| 
 | |
| // Update the function that will do the compiling with this specialised version that
 | |
| // runs the prelink and postlink parts of AOT compilation, to check it produces the
 | |
| // same result as a normal full AOT compile.
 | |
| setCompileFn(linkedCompile);
 |