feat(ElementInjector): throw when encounter a cyclic dependency

This commit is contained in:
vsavkin
2014-10-27 13:02:46 -04:00
parent b0c9d05ea7
commit 9bd65abb32
5 changed files with 70 additions and 31 deletions

View File

@ -2,9 +2,22 @@ import {ListWrapper, List} from 'facade/collection';
import {stringify} from 'facade/lang';
import {Key} from './key';
function findFirstClosedCycle(keys:List) {
var res = [];
for(var i = 0; i < keys.length; ++i) {
if (ListWrapper.contains(res, keys[i])) {
ListWrapper.push(res, keys[i]);
return res;
} else {
ListWrapper.push(res, keys[i]);
}
}
return res;
}
function constructResolvingPath(keys:List) {
if (keys.length > 1) {
var reversed = ListWrapper.reversed(keys);
var reversed = findFirstClosedCycle(ListWrapper.reversed(keys));
var tokenStrs = ListWrapper.map(reversed, (k) => stringify(k.token));
return " (" + tokenStrs.join(' -> ') + ")";
} else {