From a528636f56eb980f8cd679a2161ca588236d1283 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Mon, 16 Jul 2018 08:45:32 +0100 Subject: [PATCH] fix(ivy): allow `FunctionExpression` to indicate a method declaration (#25406) In some code formats (e.g. ES5) methods can actually be function expressions. For example: ```js function MyClass() {} // this static method is declared as a function expression MyClass.staticMethod = function() { ... }; ``` PR Close #25406 --- packages/compiler-cli/src/ngtsc/metadata/src/resolver.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/compiler-cli/src/ngtsc/metadata/src/resolver.ts b/packages/compiler-cli/src/ngtsc/metadata/src/resolver.ts index 37875e50b2..b6539e5a19 100644 --- a/packages/compiler-cli/src/ngtsc/metadata/src/resolver.ts +++ b/packages/compiler-cli/src/ngtsc/metadata/src/resolver.ts @@ -671,7 +671,8 @@ class StaticInterpreter { function isFunctionOrMethodReference(ref: Reference): ref is Reference { - return ts.isFunctionDeclaration(ref.node) || ts.isMethodDeclaration(ref.node); + return ts.isFunctionDeclaration(ref.node) || ts.isMethodDeclaration(ref.node) || + ts.isFunctionExpression(ref.node); } function literal(value: ResolvedValue): any {