fix(compiler): report errors for queries without selectors (#9018)
Fixes #4489
This commit is contained in:

committed by
Miško Hevery

parent
f0e24b1a1e
commit
057abefe50
@ -161,8 +161,8 @@ export class CompileMetadataResolver {
|
||||
var queries = [];
|
||||
var viewQueries = [];
|
||||
if (isPresent(dirMeta.queries)) {
|
||||
queries = this.getQueriesMetadata(dirMeta.queries, false);
|
||||
viewQueries = this.getQueriesMetadata(dirMeta.queries, true);
|
||||
queries = this.getQueriesMetadata(dirMeta.queries, false, directiveType);
|
||||
viewQueries = this.getQueriesMetadata(dirMeta.queries, true, directiveType);
|
||||
}
|
||||
meta = cpl.CompileDirectiveMetadata.create({
|
||||
selector: dirMeta.selector,
|
||||
@ -314,8 +314,8 @@ export class CompileMetadataResolver {
|
||||
isSelf: isSelf,
|
||||
isSkipSelf: isSkipSelf,
|
||||
isOptional: isOptional,
|
||||
query: isPresent(query) ? this.getQueryMetadata(query, null) : null,
|
||||
viewQuery: isPresent(viewQuery) ? this.getQueryMetadata(viewQuery, null) : null,
|
||||
query: isPresent(query) ? this.getQueryMetadata(query, null, typeOrFunc) : null,
|
||||
viewQuery: isPresent(viewQuery) ? this.getQueryMetadata(viewQuery, null, typeOrFunc) : null,
|
||||
token: this.getTokenMetadata(token)
|
||||
});
|
||||
|
||||
@ -381,21 +381,24 @@ export class CompileMetadataResolver {
|
||||
}
|
||||
|
||||
getQueriesMetadata(queries: {[key: string]: QueryMetadata},
|
||||
isViewQuery: boolean): cpl.CompileQueryMetadata[] {
|
||||
isViewQuery: boolean, directiveType: Type): cpl.CompileQueryMetadata[] {
|
||||
var compileQueries = [];
|
||||
StringMapWrapper.forEach(queries, (query, propertyName) => {
|
||||
if (query.isViewQuery === isViewQuery) {
|
||||
compileQueries.push(this.getQueryMetadata(query, propertyName));
|
||||
compileQueries.push(this.getQueryMetadata(query, propertyName, directiveType));
|
||||
}
|
||||
});
|
||||
return compileQueries;
|
||||
}
|
||||
|
||||
getQueryMetadata(q: QueryMetadata, propertyName: string): cpl.CompileQueryMetadata {
|
||||
getQueryMetadata(q: QueryMetadata, propertyName: string, typeOrFunc: Type | Function): cpl.CompileQueryMetadata {
|
||||
var selectors;
|
||||
if (q.isVarBindingQuery) {
|
||||
selectors = q.varBindings.map(varName => this.getTokenMetadata(varName));
|
||||
} else {
|
||||
if (!isPresent(q.selector)) {
|
||||
throw new BaseException(`Can't construct a query for the property "${propertyName}" of "${stringify(typeOrFunc)}" since the query selector wasn't defined.`);
|
||||
}
|
||||
selectors = [this.getTokenMetadata(q.selector)];
|
||||
}
|
||||
return new cpl.CompileQueryMetadata({
|
||||
|
Reference in New Issue
Block a user