feat(ivy): open up ivy_switch_mode to non-core packages (#28711)
Prior to this fix, using the compiler's ivy_switch mechanism was only available to core packages. This patch allows for this variable switching mechanism to work across all other angular packages. PR Close #28711
This commit is contained in:
parent
09d894c283
commit
d0e81eb593
|
@ -280,9 +280,7 @@ export class NgtscProgram implements api.Program {
|
||||||
beforeTransforms.push(
|
beforeTransforms.push(
|
||||||
generatedFactoryTransform(this.factoryToSourceInfo, this.importRewriter));
|
generatedFactoryTransform(this.factoryToSourceInfo, this.importRewriter));
|
||||||
}
|
}
|
||||||
if (this.isCore) {
|
beforeTransforms.push(ivySwitchTransform);
|
||||||
beforeTransforms.push(ivySwitchTransform);
|
|
||||||
}
|
|
||||||
if (customTransforms && customTransforms.beforeTs) {
|
if (customTransforms && customTransforms.beforeTs) {
|
||||||
beforeTransforms.push(...customTransforms.beforeTs);
|
beforeTransforms.push(...customTransforms.beforeTs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2932,6 +2932,37 @@ describe('ngtsc behavioral tests', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('ivy switch mode', () => {
|
||||||
|
it('should allow for symbols to be renamed when they use a SWITCH_IVY naming mechanism', () => {
|
||||||
|
env.tsconfig();
|
||||||
|
env.write('test.ts', `
|
||||||
|
export const FooCmp__POST_R3__ = 1;
|
||||||
|
export const FooCmp__PRE_R3__ = 2;
|
||||||
|
export const FooCmp = FooCmp__PRE_R3__;`);
|
||||||
|
env.driveMain();
|
||||||
|
|
||||||
|
const source = env.getContents('test.js');
|
||||||
|
expect(source).toContain(`export var FooCmp = FooCmp__POST_R3__`);
|
||||||
|
expect(source).not.toContain(`export var FooCmp = FooCmp__PRE_R3__`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should allow for SWITCH_IVY naming even even if it occurs outside of core', () => {
|
||||||
|
const content = `
|
||||||
|
export const Foo__POST_R3__ = 1;
|
||||||
|
export const Foo__PRE_R3__ = 2;
|
||||||
|
export const Foo = Foo__PRE_R3__;
|
||||||
|
`;
|
||||||
|
env.tsconfig();
|
||||||
|
env.write('test_outside_angular_core.ts', content);
|
||||||
|
env.write('test_inside_angular_core.ts', content + '\nexport const ITS_JUST_ANGULAR = true;');
|
||||||
|
env.driveMain();
|
||||||
|
|
||||||
|
const sourceTestOutsideAngularCore = env.getContents('test_outside_angular_core.js');
|
||||||
|
const sourceTestInsideAngularCore = env.getContents('test_inside_angular_core.js');
|
||||||
|
expect(sourceTestInsideAngularCore).toContain(sourceTestOutsideAngularCore);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function expectTokenAtPosition<T extends ts.Node>(
|
function expectTokenAtPosition<T extends ts.Node>(
|
||||||
|
|
Loading…
Reference in New Issue