Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Commit 03b9807

Browse files
committed
fix($injector): fix class detection RegExp
Mentioned in #14531 (comment).
1 parent afcedff commit 03b9807

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/auto/injector.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -851,9 +851,10 @@ function createInjector(modulesToLoad, strictDi) {
851851
}
852852
var result = func.$$ngIsClass;
853853
if (!isBoolean(result)) {
854+
// Support: Edge 12-13 only
854855
// Workaround for MS Edge.
855-
// Check https://connect.microsoft.com/IE/Feedback/Details/2211653
856-
result = func.$$ngIsClass = /^(?:class\s|constructor\()/.test(stringifyFn(func));
856+
// See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6156135/
857+
result = func.$$ngIsClass = /^(?:class\b|constructor\()/.test(stringifyFn(func));
857858
}
858859
return result;
859860
}

test/auto/injectorSpec.js

+13
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,19 @@ describe('injector', function() {
302302
expect(instance.aVal()).toEqual('a-value');
303303
});
304304

305+
they('should detect ES6 classes regardless of whitespace/comments ($prop)', [
306+
'class Test {}',
307+
'class Test{}',
308+
'class {}',
309+
'class{}',
310+
'class/* Test */{}'
311+
], function(classDefinition) {
312+
var Clazz = eval('(' + classDefinition + ')');
313+
var instance = injector.invoke(Clazz);
314+
315+
expect(instance).toEqual(jasmine.any(Clazz));
316+
});
317+
305318
// Support: Chrome 50-51 only
306319
// TODO (gkalpak): Remove when Chrome v52 is relased.
307320
// it('should be able to invoke classes', function() {

0 commit comments

Comments
 (0)