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); compiledFormats.size === 0);
if (bundle) { if (bundle) {
console.warn(`Compiling ${entryPoint.name} : ${property} as ${format}`); console.warn(`Compiling ${entryPoint.name} : ${property} as ${format}`);
transformer.transform(entryPoint, isCore, bundle); transformer.transform(bundle);
compiledFormats.add(formatPath); compiledFormats.add(formatPath);
} else { } else {
console.warn( console.warn(

View File

@ -20,6 +20,7 @@ import {EntryPointFormat} from './entry_point';
*/ */
export interface EntryPointBundle { export interface EntryPointBundle {
format: EntryPointFormat; format: EntryPointFormat;
isCore: boolean;
isFlatCore: boolean; isFlatCore: boolean;
rootDirs: AbsoluteFsPath[]; rootDirs: AbsoluteFsPath[];
src: BundleProgram; src: BundleProgram;
@ -56,5 +57,5 @@ export function makeEntryPointBundle(
null; null;
const isFlatCore = isCore && src.r3SymbolsFile === 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. * Transform the source (and typings) files of a bundle.
* @param bundle the bundle to transform. * @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); const reflectionHost = this.getHost(isCore, bundle);
// Parse and analyze the files. // 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. * @param dtsFiles The typings files to include the bundle.
*/ */
export function makeTestEntryPointBundle( 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 { dtsFiles?: {name: string, contents: string, isRoot?: boolean}[]): EntryPointBundle {
const src = makeTestBundleProgram(files); const src = makeTestBundleProgram(files);
const dts = dtsFiles ? makeTestBundleProgram(dtsFiles) : null; const dts = dtsFiles ? makeTestBundleProgram(dtsFiles) : null;
const isFlatCore = src.r3SymbolsFile === null; const isFlatCore = isCore && src.r3SymbolsFile === null;
return {format, rootDirs: [AbsoluteFsPath.fromUnchecked('/')], src, dts, isFlatCore}; 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}) { function setup(file: {name: string, contents: string}) {
const dir = dirname(file.name); const dir = dirname(file.name);
const bundle = makeTestEntryPointBundle('esm2015', [file]) !; const bundle = makeTestEntryPointBundle('esm2015', false, [file]) !;
const typeChecker = bundle.src.program.getTypeChecker(); const typeChecker = bundle.src.program.getTypeChecker();
const host = new Esm2015ReflectionHost(false, typeChecker); const host = new Esm2015ReflectionHost(false, typeChecker);
const referencesRegistry = new NgccReferencesRegistry(host); const referencesRegistry = new NgccReferencesRegistry(host);

View File

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

View File

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