fix: Improve error message on missing dependency

This commit is contained in:
Misko Hevery
2015-05-18 17:19:54 -07:00
parent 7501ad11ca
commit 2ccc65d7fd
16 changed files with 85 additions and 48 deletions

View File

@ -437,22 +437,27 @@ export class BindingBuilder {
}
}
function _constructDependencies(factoryFunction: Function, dependencies: List<any>) {
return isBlank(dependencies) ?
_dependenciesFor(factoryFunction) :
ListWrapper.map(dependencies, (t) => _extractToken(factoryFunction, t));
function _constructDependencies(factoryFunction: Function,
dependencies: List<any>): List<Dependency> {
if (isBlank(dependencies)) {
return _dependenciesFor(factoryFunction);
} else {
var params: List<List<any>> = ListWrapper.map(dependencies, (t) => [t]);
return ListWrapper.map(dependencies, (t) => _extractToken(factoryFunction, t, params));
}
}
function _dependenciesFor(typeOrFunc): List<any> {
function _dependenciesFor(typeOrFunc): List<Dependency> {
var params = reflector.parameters(typeOrFunc);
if (isBlank(params)) return [];
if (ListWrapper.any(params, (p) => isBlank(p))) {
throw new NoAnnotationError(typeOrFunc);
throw new NoAnnotationError(typeOrFunc, params);
}
return ListWrapper.map(params, (p) => _extractToken(typeOrFunc, p));
return ListWrapper.map(params, (p: List<any>) => _extractToken(typeOrFunc, p, params));
}
function _extractToken(typeOrFunc, annotations) {
function _extractToken(typeOrFunc, annotations /*List<any> | any*/,
params: List<List<any>>): Dependency {
var depProps = [];
var token = null;
var optional = false;
@ -496,7 +501,7 @@ function _extractToken(typeOrFunc, annotations) {
if (isPresent(token)) {
return _createDependency(token, asPromise, lazy, optional, depProps);
} else {
throw new NoAnnotationError(typeOrFunc);
throw new NoAnnotationError(typeOrFunc, params);
}
}