refactor(ivy): ngcc - recombine flat and non-flat Esm2015ReflectionHost
(#26403)
Going forward we need to be able to do the same work on both flat and non-flat module formats (such as computing arity and transforming .d.ts files) PR Close #26403
This commit is contained in:

committed by
Kara Erickson

parent
81acbad058
commit
bec4ca0c73
@ -10,7 +10,7 @@ import * as ts from 'typescript';
|
||||
import {Decorator} from '../../../ngtsc/host';
|
||||
import {DecoratorHandler} from '../../../ngtsc/transform';
|
||||
import {DecorationAnalyses, DecorationAnalyzer} from '../../src/analysis/decoration_analyzer';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
|
||||
import {makeProgram} from '../helpers/utils';
|
||||
|
||||
@ -57,7 +57,7 @@ describe('DecorationAnalyzer', () => {
|
||||
beforeEach(() => {
|
||||
program = makeProgram(TEST_PROGRAM);
|
||||
const analyzer = new DecorationAnalyzer(
|
||||
program.getTypeChecker(), new Fesm2015ReflectionHost(false, program.getTypeChecker()),
|
||||
program.getTypeChecker(), new Esm2015ReflectionHost(false, program.getTypeChecker()),
|
||||
[''], false);
|
||||
testHandler = createTestHandler();
|
||||
analyzer.handlers = [testHandler];
|
||||
|
@ -8,7 +8,7 @@
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import {SwitchMarkerAnalyzer} from '../../src/analysis/switch_marker_analyzer';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
import {makeProgram} from '../helpers/utils';
|
||||
|
||||
const TEST_PROGRAM = [
|
||||
@ -47,7 +47,7 @@ describe('SwitchMarkerAnalyzer', () => {
|
||||
describe('analyzeProgram()', () => {
|
||||
it('should check for switchable markers in all the files of the program', () => {
|
||||
const program = makeProgram(...TEST_PROGRAM);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const analyzer = new SwitchMarkerAnalyzer(host);
|
||||
const analysis = analyzer.analyzeProgram(program);
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import {ClassMemberKind, Import} from '../../../ngtsc/host';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
import {convertToDirectTsLibImport, getDeclaration, makeProgram} from '../helpers/utils';
|
||||
|
||||
const FILES = [
|
||||
@ -104,7 +104,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('getDecoratorsOfDeclaration()', () => {
|
||||
it('should find the decorators on a class', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const decorators = host.getDecoratorsOfDeclaration(classNode) !;
|
||||
@ -121,14 +121,14 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
});
|
||||
|
||||
it('should use `getImportOfIdentifier()` to retrieve import info', () => {
|
||||
const spy = spyOn(Fesm2015ReflectionHost.prototype, 'getImportOfIdentifier')
|
||||
const spy = spyOn(Esm2015ReflectionHost.prototype, 'getImportOfIdentifier')
|
||||
.and.callFake(
|
||||
(identifier: ts.Identifier) => identifier.getText() === 'Directive' ?
|
||||
{from: '@angular/core', name: 'Directive'} :
|
||||
{});
|
||||
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
|
||||
@ -143,7 +143,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should support decorators being used inside @angular/core', () => {
|
||||
const program = makeProgram(fileSystem.files[1]);
|
||||
const host = new Fesm2015ReflectionHost(true, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(true, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/node_modules/@angular/core/some_directive.js', 'SomeDirective',
|
||||
ts.isVariableDeclaration);
|
||||
@ -164,7 +164,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('getMembersOfClass()', () => {
|
||||
it('should find decorated members on a class', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const members = host.getMembersOfClass(classNode);
|
||||
@ -182,7 +182,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should find non decorated properties on a class', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const members = host.getMembersOfClass(classNode);
|
||||
@ -196,7 +196,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should find static methods on a class', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const members = host.getMembersOfClass(classNode);
|
||||
@ -209,7 +209,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should find static properties on a class', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
|
||||
@ -223,10 +223,10 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should use `getImportOfIdentifier()` to retrieve import info', () => {
|
||||
const spy =
|
||||
spyOn(Fesm2015ReflectionHost.prototype, 'getImportOfIdentifier').and.returnValue({});
|
||||
spyOn(Esm2015ReflectionHost.prototype, 'getImportOfIdentifier').and.returnValue({});
|
||||
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
|
||||
@ -237,7 +237,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should support decorators being used inside @angular/core', () => {
|
||||
const program = makeProgram(fileSystem.files[1]);
|
||||
const host = new Fesm2015ReflectionHost(true, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(true, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/node_modules/@angular/core/some_directive.js', 'SomeDirective',
|
||||
ts.isVariableDeclaration);
|
||||
@ -253,7 +253,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('getConstructorParameters', () => {
|
||||
it('should find the decorated constructor parameters', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const parameters = host.getConstructorParameters(classNode);
|
||||
@ -270,11 +270,11 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('(returned parameters `decorators`)', () => {
|
||||
it('should use `getImportOfIdentifier()` to retrieve import info', () => {
|
||||
const mockImportInfo = {} as Import;
|
||||
const spy = spyOn(Fesm2015ReflectionHost.prototype, 'getImportOfIdentifier')
|
||||
const spy = spyOn(Esm2015ReflectionHost.prototype, 'getImportOfIdentifier')
|
||||
.and.returnValue(mockImportInfo);
|
||||
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const parameters = host.getConstructorParameters(classNode);
|
||||
@ -292,7 +292,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('getDeclarationOfIdentifier', () => {
|
||||
it('should return the declaration of a locally defined identifier', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const ctrDecorators = host.getConstructorParameters(classNode) !;
|
||||
@ -308,7 +308,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should return the declaration of an externally defined identifier', () => {
|
||||
const program = makeProgram(fileSystem.files[0]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const classNode = getDeclaration(
|
||||
program, '/some_directive.js', 'SomeDirective', ts.isVariableDeclaration);
|
||||
const classDecorators = host.getDecoratorsOfDeclaration(classNode) !;
|
||||
@ -331,7 +331,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
describe('getVariableValue', () => {
|
||||
it('should find the "actual" declaration of an aliased variable identifier', () => {
|
||||
const program = makeProgram(fileSystem.files[2]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const ngModuleRef = findVariableDeclaration(
|
||||
program.getSourceFile(fileSystem.files[2].name) !, 'HttpClientXsrfModule_1');
|
||||
|
||||
@ -346,7 +346,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should return null if the variable has no assignment', () => {
|
||||
const program = makeProgram(fileSystem.files[2]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const missingValue = findVariableDeclaration(
|
||||
program.getSourceFile(fileSystem.files[2].name) !, 'missingValue');
|
||||
const value = host.getVariableValue(missingValue !);
|
||||
@ -355,7 +355,7 @@ describe('Fesm2015ReflectionHost [import helper style]', () => {
|
||||
|
||||
it('should return null if the variable is not assigned from a call to __decorate', () => {
|
||||
const program = makeProgram(fileSystem.files[2]);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const nonDecoratedVar = findVariableDeclaration(
|
||||
program.getSourceFile(fileSystem.files[2].name) !, 'nonDecoratedVar');
|
||||
const value = host.getVariableValue(nonDecoratedVar !);
|
File diff suppressed because it is too large
Load Diff
@ -9,8 +9,8 @@
|
||||
import * as ts from 'typescript';
|
||||
|
||||
import {ClassMemberKind, Import} from '../../../ngtsc/host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
import {Esm5ReflectionHost} from '../../src/host/esm5_host';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {getDeclaration, makeProgram} from '../helpers/utils';
|
||||
|
||||
const SOME_DIRECTIVE_FILE = {
|
||||
@ -1153,7 +1153,7 @@ describe('Esm5ReflectionHost', () => {
|
||||
let superGetClassSymbolSpy: jasmine.Spy;
|
||||
|
||||
beforeEach(() => {
|
||||
superGetClassSymbolSpy = spyOn(Fesm2015ReflectionHost.prototype, 'getClassSymbol');
|
||||
superGetClassSymbolSpy = spyOn(Esm2015ReflectionHost.prototype, 'getClassSymbol');
|
||||
});
|
||||
|
||||
it('should return the class symbol returned by the superclass (if any)', () => {
|
||||
@ -1221,7 +1221,7 @@ describe('Esm5ReflectionHost', () => {
|
||||
host = new Esm5ReflectionHost(false, null as any);
|
||||
mockNode = {} as any;
|
||||
|
||||
superIsClassSpy = spyOn(Fesm2015ReflectionHost.prototype, 'isClass');
|
||||
superIsClassSpy = spyOn(Esm2015ReflectionHost.prototype, 'isClass');
|
||||
getClassSymbolSpy = spyOn(Esm5ReflectionHost.prototype, 'getClassSymbol');
|
||||
});
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -13,7 +13,7 @@ import {makeProgram} from '../helpers/utils';
|
||||
import {DecorationAnalyzer} from '../../src/analysis/decoration_analyzer';
|
||||
import {SwitchMarkerAnalyzer} from '../../src/analysis/switch_marker_analyzer';
|
||||
import {DtsMapper} from '../../src/host/dts_mapper';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
import {Esm2015Renderer} from '../../src/rendering/esm2015_renderer';
|
||||
|
||||
function setup(file: {name: string, contents: string}, transformDts: boolean = false) {
|
||||
@ -21,7 +21,7 @@ function setup(file: {name: string, contents: string}, transformDts: boolean = f
|
||||
const dtsMapper = new DtsMapper(dir, dir);
|
||||
const program = makeProgram(file);
|
||||
const sourceFile = program.getSourceFile(file.name) !;
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const decorationAnalyses =
|
||||
new DecorationAnalyzer(program.getTypeChecker(), host, [''], false).analyzeProgram(program);
|
||||
const switchMarkerAnalyses = new SwitchMarkerAnalyzer(host).analyzeProgram(program);
|
||||
|
@ -13,11 +13,11 @@ import {fromObject, generateMapFileComment} from 'convert-source-map';
|
||||
import {makeProgram} from '../helpers/utils';
|
||||
import {AnalyzedClass, DecorationAnalyzer, DecorationAnalyses} from '../../src/analysis/decoration_analyzer';
|
||||
import {SwitchMarkerAnalyzer} from '../../src/analysis/switch_marker_analyzer';
|
||||
import {Fesm2015ReflectionHost} from '../../src/host/fesm2015_host';
|
||||
import {Esm2015ReflectionHost} from '../../src/host/esm2015_host';
|
||||
import {Renderer} from '../../src/rendering/renderer';
|
||||
|
||||
class TestRenderer extends Renderer {
|
||||
constructor(host: Fesm2015ReflectionHost) { super(host, false, null, '/src', '/dist'); }
|
||||
constructor(host: Esm2015ReflectionHost) { super(host, false, null, '/src', '/dist'); }
|
||||
addImports(output: MagicString, imports: {name: string, as: string}[]) {
|
||||
output.prepend('\n// ADD IMPORTS\n');
|
||||
}
|
||||
@ -37,7 +37,7 @@ class TestRenderer extends Renderer {
|
||||
|
||||
function createTestRenderer(file: {name: string, contents: string}) {
|
||||
const program = makeProgram(file);
|
||||
const host = new Fesm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const host = new Esm2015ReflectionHost(false, program.getTypeChecker());
|
||||
const decorationAnalyses =
|
||||
new DecorationAnalyzer(program.getTypeChecker(), host, [''], false).analyzeProgram(program);
|
||||
const switchMarkerAnalyses = new SwitchMarkerAnalyzer(host).analyzeProgram(program);
|
||||
|
Reference in New Issue
Block a user