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 82cd6b87f0
commit 14e797c1a1
2 changed files with 4 additions and 3 deletions

View File

@@ -724,7 +724,8 @@ function createInjector(modulesToLoad) {
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

@@ -630,7 +630,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');
});
@@ -641,7 +641,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');
});
});