refactor(ivy): ngcc - simplify `Transformer.transform` API (#29092)

By ensuring that EntryPointBundle contains everything that `Transformer.transform()`
needs to do its work, we can simplify its signature.

PR Close #29092
This commit is contained in:
Pete Bacon Darwin 2019-03-20 13:47:58 +00:00 committed by Matias Niemelä
parent 7b55ba58b9
commit c9f7cdaafd
7 changed files with 12 additions and 9 deletions

View File

@ -80,7 +80,7 @@ export function mainNgcc({baseSourcePath, targetEntryPointPath, propertiesToCons
compiledFormats.size === 0);
if (bundle) {
console.warn(`Compiling ${entryPoint.name} : ${property} as ${format}`);
transformer.transform(entryPoint, isCore, bundle);
transformer.transform(bundle);
compiledFormats.add(formatPath);
} else {
console.warn(

View File

@ -20,6 +20,7 @@ import {EntryPointFormat} from './entry_point';
*/
export interface EntryPointBundle {
format: EntryPointFormat;
isCore: boolean;
isFlatCore: boolean;
rootDirs: AbsoluteFsPath[];
src: BundleProgram;
@ -56,5 +57,5 @@ export function makeEntryPointBundle(
null;
const isFlatCore = isCore && src.r3SymbolsFile === null;
return {format, rootDirs, isFlatCore, src, dts};
return {format, rootDirs, isCore, isFlatCore, src, dts};
}

View File

@ -55,7 +55,8 @@ export class Transformer {
* Transform the source (and typings) files of a bundle.
* @param bundle the bundle to transform.
*/
transform(entryPoint: EntryPoint, isCore: boolean, bundle: EntryPointBundle): void {
transform(bundle: EntryPointBundle): void {
const isCore = bundle.isCore;
const reflectionHost = this.getHost(isCore, bundle);
// Parse and analyze the files.

View File

@ -22,12 +22,13 @@ export {getDeclaration} from '../../../src/ngtsc/testing/in_memory_typescript';
* @param dtsFiles The typings files to include the bundle.
*/
export function makeTestEntryPointBundle(
format: EntryPointFormat, files: {name: string, contents: string, isRoot?: boolean}[],
format: EntryPointFormat, isCore: boolean,
files: {name: string, contents: string, isRoot?: boolean}[],
dtsFiles?: {name: string, contents: string, isRoot?: boolean}[]): EntryPointBundle {
const src = makeTestBundleProgram(files);
const dts = dtsFiles ? makeTestBundleProgram(dtsFiles) : null;
const isFlatCore = src.r3SymbolsFile === null;
return {format, rootDirs: [AbsoluteFsPath.fromUnchecked('/')], src, dts, isFlatCore};
const isFlatCore = isCore && src.r3SymbolsFile === null;
return {format, rootDirs: [AbsoluteFsPath.fromUnchecked('/')], src, dts, isCore, isFlatCore};
}
/**

View File

@ -18,7 +18,7 @@ import {makeTestEntryPointBundle} from '../helpers/utils';
function setup(file: {name: string, contents: string}) {
const dir = dirname(file.name);
const bundle = makeTestEntryPointBundle('esm2015', [file]) !;
const bundle = makeTestEntryPointBundle('esm2015', false, [file]) !;
const typeChecker = bundle.src.program.getTypeChecker();
const host = new Esm2015ReflectionHost(false, typeChecker);
const referencesRegistry = new NgccReferencesRegistry(host);

View File

@ -18,7 +18,7 @@ import {makeTestEntryPointBundle, getDeclaration} from '../helpers/utils';
function setup(file: {name: string, contents: string}) {
const dir = dirname(file.name);
const bundle = makeTestEntryPointBundle('esm5', [file]);
const bundle = makeTestEntryPointBundle('esm5', false, [file]);
const typeChecker = bundle.src.program.getTypeChecker();
const host = new Esm5ReflectionHost(false, typeChecker);
const referencesRegistry = new NgccReferencesRegistry(host);

View File

@ -50,7 +50,7 @@ function createTestRenderer(
packageName: string, files: {name: string, contents: string}[],
dtsFiles?: {name: string, contents: string}[]) {
const isCore = packageName === '@angular/core';
const bundle = makeTestEntryPointBundle('esm2015', files, dtsFiles);
const bundle = makeTestEntryPointBundle('esm2015', isCore, files, dtsFiles);
const typeChecker = bundle.src.program.getTypeChecker();
const host = new Esm2015ReflectionHost(isCore, typeChecker, bundle.dts);
const referencesRegistry = new NgccReferencesRegistry(host);