diff --git a/packages/core/src/reflection/reflection_capabilities.ts b/packages/core/src/reflection/reflection_capabilities.ts index 32a5112659..634a4b48b9 100644 --- a/packages/core/src/reflection/reflection_capabilities.ts +++ b/packages/core/src/reflection/reflection_capabilities.ts @@ -25,7 +25,7 @@ export const INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/; export const INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/; export const INHERITED_CLASS_WITH_DELEGATE_CTOR = - /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/; + /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s*super\(\.\.\.arguments\)/; /** * Determine whether a stringified type is a class which delegates its constructor diff --git a/packages/core/test/reflection/reflector_spec.ts b/packages/core/test/reflection/reflector_spec.ts index 90a008238f..554496463d 100644 --- a/packages/core/test/reflection/reflector_spec.ts +++ b/packages/core/test/reflection/reflector_spec.ts @@ -201,6 +201,18 @@ class TestObj { expect(isDelegateCtor(ChildWithCtor.toString())).toBe(false); }); + it('should support ES2015 classes when minified', () => { + // These classes are ES2015 in minified form + const ChildNoCtorMinified = 'class ChildNoCtor extends Parent{}'; + const ChildWithCtorMinified = 'class ChildWithCtor extends Parent{constructor(){super()}}'; + const ChildNoCtorPrivatePropsMinified = + 'class ChildNoCtorPrivateProps extends Parent{constructor(){super(...arguments);this.x=10}}'; + + expect(isDelegateCtor(ChildNoCtorMinified)).toBe(true); + expect(isDelegateCtor(ChildNoCtorPrivatePropsMinified)).toBe(true); + expect(isDelegateCtor(ChildWithCtorMinified)).toBe(false); + }); + it('should not throw when no prototype on type', () => { // Cannot test arrow function here due to the compilation const dummyArrowFn = function() {};