fix(compiler-core): relax error on unknown entities

close #663
This commit is contained in:
Evan You 2020-01-29 12:16:58 -05:00
parent 93eba4347d
commit 730d329f79
4 changed files with 3 additions and 86 deletions

View File

@ -6956,75 +6956,6 @@ Object {
} }
`; `;
exports[`compiler: parse Errors UNKNOWN_NAMED_CHARACTER_REFERENCE <template>&unknown;</template> 1`] = `
Object {
"cached": 0,
"children": Array [
Object {
"children": Array [
Object {
"content": "&unknown;",
"loc": Object {
"end": Object {
"column": 20,
"line": 1,
"offset": 19,
},
"source": "&unknown;",
"start": Object {
"column": 11,
"line": 1,
"offset": 10,
},
},
"type": 2,
},
],
"codegenNode": undefined,
"isSelfClosing": false,
"loc": Object {
"end": Object {
"column": 31,
"line": 1,
"offset": 30,
},
"source": "<template>&unknown;</template>",
"start": Object {
"column": 1,
"line": 1,
"offset": 0,
},
},
"ns": 0,
"props": Array [],
"tag": "template",
"tagType": 3,
"type": 1,
},
],
"codegenNode": undefined,
"components": Array [],
"directives": Array [],
"helpers": Array [],
"hoists": Array [],
"imports": Array [],
"loc": Object {
"end": Object {
"column": 31,
"line": 1,
"offset": 30,
},
"source": "<template>&unknown;</template>",
"start": Object {
"column": 1,
"line": 1,
"offset": 0,
},
},
"type": 0,
}
`;
exports[`compiler: parse Errors X_INVALID_END_TAG <svg><![CDATA[</div>]]></svg> 1`] = ` exports[`compiler: parse Errors X_INVALID_END_TAG <svg><![CDATA[</div>]]></svg> 1`] = `
Object { Object {
"cached": 0, "cached": 0,

View File

@ -2594,17 +2594,6 @@ foo
] ]
} }
], ],
UNKNOWN_NAMED_CHARACTER_REFERENCE: [
{
code: '<template>&unknown;</template>',
errors: [
{
type: ErrorCodes.UNKNOWN_NAMED_CHARACTER_REFERENCE,
loc: { offset: 10, line: 1, column: 11 }
}
]
}
],
X_INVALID_END_TAG: [ X_INVALID_END_TAG: [
{ {
code: '<template></div></template>', code: '<template></div></template>',

View File

@ -57,7 +57,6 @@ export const enum ErrorCodes {
UNEXPECTED_NULL_CHARACTER, UNEXPECTED_NULL_CHARACTER,
UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME, UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME,
UNEXPECTED_SOLIDUS_IN_TAG, UNEXPECTED_SOLIDUS_IN_TAG,
UNKNOWN_NAMED_CHARACTER_REFERENCE,
// Vue-specific parse errors // Vue-specific parse errors
X_INVALID_END_TAG, X_INVALID_END_TAG,
@ -141,7 +140,6 @@ export const errorMessages: { [code: number]: string } = {
[ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME]: [ErrorCodes.UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME]:
"'<?' is allowed only in XML context.", "'<?' is allowed only in XML context.",
[ErrorCodes.UNEXPECTED_SOLIDUS_IN_TAG]: "Illegal '/' in tags.", [ErrorCodes.UNEXPECTED_SOLIDUS_IN_TAG]: "Illegal '/' in tags.",
[ErrorCodes.UNKNOWN_NAMED_CHARACTER_REFERENCE]: 'Unknown entity name.',
// Vue-specific parse errors // Vue-specific parse errors
[ErrorCodes.X_INVALID_END_TAG]: 'Invalid end tag.', [ErrorCodes.X_INVALID_END_TAG]: 'Invalid end tag.',

View File

@ -820,8 +820,8 @@ function parseTextData(
if (head[0] === '&') { if (head[0] === '&') {
// Named character reference. // Named character reference.
let name = '', let name = ''
value: string | undefined = undefined let value: string | undefined = undefined
if (/[0-9a-z]/i.test(rawText[1])) { if (/[0-9a-z]/i.test(rawText[1])) {
for ( for (
let length = context.options.maxCRNameLength; let length = context.options.maxCRNameLength;
@ -836,7 +836,7 @@ function parseTextData(
if ( if (
mode === TextModes.ATTRIBUTE_VALUE && mode === TextModes.ATTRIBUTE_VALUE &&
!semi && !semi &&
/[=a-z0-9]/i.test(rawText[1 + name.length] || '') /[=a-z0-9]/i.test(rawText[name.length + 1] || '')
) { ) {
decodedText += '&' + name decodedText += '&' + name
advance(1 + name.length) advance(1 + name.length)
@ -851,7 +851,6 @@ function parseTextData(
} }
} }
} else { } else {
emitError(context, ErrorCodes.UNKNOWN_NAMED_CHARACTER_REFERENCE)
decodedText += '&' + name decodedText += '&' + name
advance(1 + name.length) advance(1 + name.length)
} }