fix(compiler): warning prints "WARNING" instead of "ERROR" (#15125)
This commit is contained in:
parent
3c15916e17
commit
3b1956bbf2
|
@ -110,17 +110,18 @@ export class ParseSourceSpan {
|
|||
|
||||
export enum ParseErrorLevel {
|
||||
WARNING,
|
||||
FATAL
|
||||
ERROR,
|
||||
}
|
||||
|
||||
export class ParseError {
|
||||
constructor(
|
||||
public span: ParseSourceSpan, public msg: string,
|
||||
public level: ParseErrorLevel = ParseErrorLevel.FATAL) {}
|
||||
public level: ParseErrorLevel = ParseErrorLevel.ERROR) {}
|
||||
|
||||
toString(): string {
|
||||
const ctx = this.span.start.getContext(100, 3);
|
||||
const contextStr = ctx ? ` ("${ctx.before}[ERROR ->]${ctx.after}")` : '';
|
||||
const contextStr =
|
||||
ctx ? ` ("${ctx.before}[${ParseErrorLevel[this.level]} ->]${ctx.after}")` : '';
|
||||
const details = this.span.details ? `, ${this.span.details}` : '';
|
||||
return `${this.msg}${contextStr}: ${this.span.start}${details}`;
|
||||
}
|
||||
|
|
|
@ -161,7 +161,7 @@ export class BindingParser {
|
|||
this._reportError(
|
||||
`Assigning animation triggers via @prop="exp" attributes with an expression is invalid.` +
|
||||
` Use property bindings (e.g. [@prop]="exp") or use an attribute without a value (e.g. @prop) instead.`,
|
||||
sourceSpan, ParseErrorLevel.FATAL);
|
||||
sourceSpan, ParseErrorLevel.ERROR);
|
||||
}
|
||||
this._parseAnimation(name, value, sourceSpan, targetMatchableAttrs, targetProps);
|
||||
} else {
|
||||
|
@ -366,7 +366,7 @@ export class BindingParser {
|
|||
|
||||
private _reportError(
|
||||
message: string, sourceSpan: ParseSourceSpan,
|
||||
level: ParseErrorLevel = ParseErrorLevel.FATAL) {
|
||||
level: ParseErrorLevel = ParseErrorLevel.ERROR) {
|
||||
this._targetErrors.push(new ParseError(sourceSpan, message, level));
|
||||
}
|
||||
|
||||
|
@ -405,7 +405,7 @@ export class BindingParser {
|
|||
const report = isAttr ? this._schemaRegistry.validateAttribute(propName) :
|
||||
this._schemaRegistry.validateProperty(propName);
|
||||
if (report.error) {
|
||||
this._reportError(report.msg, sourceSpan, ParseErrorLevel.FATAL);
|
||||
this._reportError(report.msg, sourceSpan, ParseErrorLevel.ERROR);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ export class TemplateParser {
|
|||
templateUrl: string): {template: TemplateAst[], pipes: CompilePipeSummary[]} {
|
||||
const result = this.tryParse(component, template, directives, pipes, schemas, templateUrl);
|
||||
const warnings = result.errors.filter(error => error.level === ParseErrorLevel.WARNING);
|
||||
const errors = result.errors.filter(error => error.level === ParseErrorLevel.FATAL);
|
||||
const errors = result.errors.filter(error => error.level === ParseErrorLevel.ERROR);
|
||||
|
||||
if (warnings.length > 0) {
|
||||
this._console.warn(`Template parse warnings:\n${warnings.join('\n')}`);
|
||||
|
@ -196,7 +196,7 @@ export class TemplateParser {
|
|||
} else {
|
||||
const error = new TemplateParseError(
|
||||
`Reference "#${name}" is defined several times`, reference.sourceSpan,
|
||||
ParseErrorLevel.FATAL);
|
||||
ParseErrorLevel.ERROR);
|
||||
errors.push(error);
|
||||
}
|
||||
}));
|
||||
|
@ -731,7 +731,7 @@ class TemplateParseVisitor implements html.Visitor {
|
|||
|
||||
private _reportError(
|
||||
message: string, sourceSpan: ParseSourceSpan,
|
||||
level: ParseErrorLevel = ParseErrorLevel.FATAL) {
|
||||
level: ParseErrorLevel = ParseErrorLevel.ERROR) {
|
||||
this._targetErrors.push(new ParseError(sourceSpan, message, level));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
/**
|
||||
* @license
|
||||
* Copyright Google Inc. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style license that can be
|
||||
* found in the LICENSE file at https://angular.io/license
|
||||
*/
|
||||
|
||||
import {ParseError, ParseErrorLevel, ParseLocation, ParseSourceFile, ParseSourceSpan} from '../src/parse_util'
|
||||
|
||||
export function main() {
|
||||
describe(
|
||||
'ParseError',
|
||||
() => {
|
||||
it('should reflect the level in the message', () => {
|
||||
const file = new ParseSourceFile(`foo\nbar\nfoo`, 'url');
|
||||
const start = new ParseLocation(file, 4, 1, 0);
|
||||
const end = new ParseLocation(file, 6, 1, 2);
|
||||
const span = new ParseSourceSpan(start, end);
|
||||
|
||||
const fatal = new ParseError(span, 'fatal', ParseErrorLevel.ERROR);
|
||||
expect(fatal.toString()).toEqual('fatal ("foo\n[ERROR ->]bar\nfoo"): url@1:0');
|
||||
|
||||
const warning = new ParseError(span, 'warning', ParseErrorLevel.WARNING);
|
||||
expect(warning.toString()).toEqual('warning ("foo\n[WARNING ->]bar\nfoo"): url@1:0');
|
||||
});
|
||||
});
|
||||
}
|
Loading…
Reference in New Issue