fix(compiler): report better error messages for host bindings

Closes #10346
This commit is contained in:
Tobias Bosch
2016-07-28 02:27:07 -07:00
parent 0a46f37444
commit fb3608aa5d
3 changed files with 21 additions and 4 deletions

View File

@ -22,7 +22,8 @@ export class ParseSourceFile {
}
export class ParseSourceSpan {
constructor(public start: ParseLocation, public end: ParseLocation) {}
constructor(
public start: ParseLocation, public end: ParseLocation, public details: string = null) {}
toString(): string {
return this.start.file.content.substring(this.start.offset, this.end.offset);
@ -43,6 +44,7 @@ export abstract class ParseError {
var source = this.span.start.file.content;
var ctxStart = this.span.start.offset;
var contextStr = '';
var details = '';
if (isPresent(ctxStart)) {
if (ctxStart > source.length - 1) {
ctxStart = source.length - 1;
@ -77,6 +79,9 @@ export abstract class ParseError {
source.substring(this.span.start.offset, ctxEnd + 1);
contextStr = ` ("${context}")`;
}
return `${this.msg}${contextStr}: ${this.span.start}`;
if (this.span.details) {
details = `, ${this.span.details}`;
}
return `${this.msg}${contextStr}: ${this.span.start}${details}`;
}
}

View File

@ -675,10 +675,12 @@ class TemplateParseVisitor implements HtmlAstVisitor {
private _createDirectiveAsts(
isTemplateElement: boolean, elementName: string, directives: CompileDirectiveMetadata[],
props: BoundElementOrDirectiveProperty[], elementOrDirectiveRefs: ElementOrDirectiveRef[],
sourceSpan: ParseSourceSpan, targetReferences: ReferenceAst[]): DirectiveAst[] {
elementSourceSpan: ParseSourceSpan, targetReferences: ReferenceAst[]): DirectiveAst[] {
const matchedReferences = new Set<string>();
let component: CompileDirectiveMetadata = null;
const directiveAsts = directives.map((directive: CompileDirectiveMetadata) => {
const sourceSpan = new ParseSourceSpan(
elementSourceSpan.start, elementSourceSpan.end, `Directive ${directive.type.name}`);
if (directive.isComponent) {
component = directive;
}