fix($injector): report circularity in circular dependency error message

Change the error message for a circular dependency to display the full
circle back to the first service being instantiated, so that the problem
is obvious. The previous message stopped one dependency short of the full
circle.

Changes the content of the cdep error message, which may be considered
a breaking change.

Closes #7500
This commit is contained in:
Tero Parviainen
2014-05-17 19:44:50 +03:00
committed by rodyhaddad
parent 3de07aa2eb
commit 545d22b470
2 changed files with 4 additions and 3 deletions

View File

@@ -749,7 +749,8 @@ function createInjector(modulesToLoad, strictDi) {
function getService(serviceName) {
if (cache.hasOwnProperty(serviceName)) {
if (cache[serviceName] === INSTANTIATING) {
throw $injectorMinErr('cdep', 'Circular dependency found: {0}', path.join(' <- '));
throw $injectorMinErr('cdep', 'Circular dependency found: {0}',
serviceName + ' <- ' + path.join(' <- '));
}
return cache[serviceName];
} else {

View File

@@ -656,7 +656,7 @@ describe('injector', function() {
$provide.factory('service', function(service){});
return function(service) {};
}]);
}).toThrowMinErr('$injector', 'cdep', 'Circular dependency found: service');
}).toThrowMinErr('$injector', 'cdep', 'Circular dependency found: service <- service');
});
@@ -667,7 +667,7 @@ describe('injector', function() {
$provide.factory('b', function(a){});
return function(a) {};
}]);
}).toThrowMinErr('$injector', 'cdep', 'Circular dependency found: b <- a');
}).toThrowMinErr('$injector', 'cdep', 'Circular dependency found: a <- b <- a');
});
});