From f0395836b67a8d95223a8f63a9d423171f8ea1e8 Mon Sep 17 00:00:00 2001 From: Matt Lewis Date: Wed, 29 May 2019 16:39:27 -0400 Subject: [PATCH] fix(ivy): evaluate non existing property access as undefined (#30738) Closes #30726 PR Close #30738 --- .../src/ngtsc/partial_evaluator/src/interpreter.ts | 2 +- .../src/ngtsc/partial_evaluator/test/evaluator_spec.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts index a74c84770e..07d0f6452b 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/src/interpreter.ts @@ -329,7 +329,7 @@ export class StaticInterpreter { if (lhs.has(strIndex)) { return lhs.get(strIndex) !; } else { - throw new Error(`Invalid map access: [${Array.from(lhs.keys())}] dot ${rhs}`); + return undefined; } } else if (Array.isArray(lhs)) { if (rhs === 'length') { diff --git a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts index f6ff0a83c0..3c1ab32600 100644 --- a/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts +++ b/packages/compiler-cli/src/ngtsc/partial_evaluator/test/evaluator_spec.ts @@ -39,6 +39,9 @@ describe('ngtsc metadata', () => { it('map access works', () => { expect(evaluate('const obj = {a: "test"};', 'obj.a')).toEqual('test'); }); + it('resolves undefined property access', + () => { expect(evaluate('const obj: any = {}', 'obj.bar')).toEqual(undefined); }); + it('function calls work', () => { expect(evaluate(`function foo(bar) { return bar; }`, 'foo("test")')).toEqual('test'); });