fix($injector): fix class detection RegExp
Mentioned in https://github.com/angular/angular.js/pull/14531#discussion_r61410683. Closes #14533
This commit is contained in:
committed by
Georgios Kalpakas
parent
f6c3b35745
commit
c855c3fb9f
@@ -855,9 +855,9 @@ function createInjector(modulesToLoad, strictDi) {
|
||||
}
|
||||
var result = func.$$ngIsClass;
|
||||
if (!isBoolean(result)) {
|
||||
// Workaround for MS Edge.
|
||||
// Check https://connect.microsoft.com/IE/Feedback/Details/2211653
|
||||
result = func.$$ngIsClass = /^(?:class\s|constructor\()/.test(stringifyFn(func));
|
||||
// Support: Edge 12-13 only
|
||||
// See: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/6156135/
|
||||
result = func.$$ngIsClass = /^(?:class\b|constructor\()/.test(stringifyFn(func));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -302,6 +302,26 @@ describe('injector', function() {
|
||||
expect(instance.aVal()).toEqual('a-value');
|
||||
});
|
||||
|
||||
if (/chrome/.test(navigator.userAgent)) {
|
||||
they('should detect ES6 classes regardless of whitespace/comments ($prop)', [
|
||||
'class Test {}',
|
||||
'class Test{}',
|
||||
'class //<--ES6 stuff\nTest {}',
|
||||
'class//<--ES6 stuff\nTest {}',
|
||||
'class {}',
|
||||
'class{}',
|
||||
'class //<--ES6 stuff\n {}',
|
||||
'class//<--ES6 stuff\n {}',
|
||||
'class/* Test */{}',
|
||||
'class /* Test */ {}'
|
||||
], function(classDefinition) {
|
||||
var Clazz = eval('(' + classDefinition + ')');
|
||||
var instance = injector.invoke(Clazz);
|
||||
|
||||
expect(instance).toEqual(jasmine.any(Clazz));
|
||||
});
|
||||
}
|
||||
|
||||
// Support: Chrome 50-51 only
|
||||
// TODO (gkalpak): Remove when Chrome v52 is relased.
|
||||
// it('should be able to invoke classes', function() {
|
||||
|
||||
Reference in New Issue
Block a user