fix(compiler): ensure JIT compilation of ɵɵngDeclarePipe() works (#40929)

Previously the compiler was not evaluating the JIT compilation
of `ɵɵngDeclarePipe()` but there was no test to check it.

PR Close #40929
This commit is contained in:
Pete Bacon Darwin 2021-02-18 22:20:45 +00:00 committed by Zach Arend
parent e986a9787b
commit 3c24136b98
2 changed files with 32 additions and 1 deletions

View File

@ -54,7 +54,8 @@ export class CompilerFacadeImpl implements CompilerFacade {
angularCoreEnv: CoreEnvironment, sourceMapUrl: string,
declaration: R3DeclarePipeFacade): any {
const meta = convertDeclarePipeFacadeToMetadata(declaration);
return compilePipeFromMetadata(meta);
const res = compilePipeFromMetadata(meta);
return this.jitExpression(res.expression, angularCoreEnv, sourceMapUrl, []);
}
compileInjectable(

View File

@ -0,0 +1,30 @@
/**
* @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 {ɵɵngDeclarePipe} from '@angular/core';
import {PipeDef} from '../../../src/render3';
describe('Pipe declaration jit compilation', () => {
it('should compile a named Pipe declaration', () => {
const def = ɵɵngDeclarePipe({type: TestClass, name: 'foo'}) as PipeDef<TestClass>;
expect(def.type).toBe(TestClass);
expect(def.name).toEqual('foo');
expect(def.pure).toEqual(true);
});
it('should compile an impure Pipe declaration', () => {
const def = ɵɵngDeclarePipe({type: TestClass, name: 'foo', pure: false}) as PipeDef<TestClass>;
expect(def.type).toBe(TestClass);
expect(def.name).toEqual('foo');
expect(def.pure).toEqual(false);
});
});
class TestClass {}