mirror of https://github.com/vuejs/core.git
Merge 1c89b42aaf
into 56be3dd4db
This commit is contained in:
commit
b3b428de17
File diff suppressed because it is too large
Load Diff
|
@ -446,6 +446,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 12, line: 1, column: 13 },
|
||||||
|
end: { offset: 15, line: 1, column: 16 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [],
|
props: [],
|
||||||
|
@ -476,6 +486,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 7, line: 1, column: 8 },
|
||||||
|
end: { offset: 10, line: 1, column: 11 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [],
|
props: [],
|
||||||
|
@ -496,6 +516,11 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [],
|
props: [],
|
||||||
|
@ -519,6 +544,11 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'img',
|
tag: 'img',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'img',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [],
|
props: [],
|
||||||
|
@ -541,6 +571,11 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'img',
|
tag: 'img',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'img',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [],
|
props: [],
|
||||||
|
@ -728,6 +763,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 10, line: 1, column: 11 },
|
||||||
|
end: { offset: 13, line: 1, column: 14 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -765,6 +810,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 13, line: 1, column: 14 },
|
||||||
|
end: { offset: 16, line: 1, column: 17 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -810,6 +865,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 13, line: 1, column: 14 },
|
||||||
|
end: { offset: 16, line: 1, column: 17 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -855,6 +920,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 15, line: 1, column: 16 },
|
||||||
|
end: { offset: 18, line: 1, column: 19 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -900,6 +975,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 15, line: 1, column: 16 },
|
||||||
|
end: { offset: 18, line: 1, column: 19 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -945,6 +1030,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 13, line: 1, column: 14 },
|
||||||
|
end: { offset: 16, line: 1, column: 17 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -1073,6 +1168,16 @@ describe('compiler: parse', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { offset: 37, line: 1, column: 38 },
|
||||||
|
end: { offset: 40, line: 1, column: 41 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
props: [
|
props: [
|
||||||
|
@ -1178,6 +1283,11 @@ describe('compiler: parse', () => {
|
||||||
|
|
||||||
expect(element).toStrictEqual({
|
expect(element).toStrictEqual({
|
||||||
children: [],
|
children: [],
|
||||||
|
closeTagLoc: {
|
||||||
|
start: { column: 6, line: 3, offset: 25 },
|
||||||
|
end: { column: 9, line: 3, offset: 28 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
codegenNode: undefined,
|
codegenNode: undefined,
|
||||||
loc: {
|
loc: {
|
||||||
start: { column: 1, line: 1, offset: 0 },
|
start: { column: 1, line: 1, offset: 0 },
|
||||||
|
@ -1211,6 +1321,11 @@ describe('compiler: parse', () => {
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
tag: 'div',
|
tag: 'div',
|
||||||
|
tagLoc: {
|
||||||
|
start: { column: 2, line: 1, offset: 1 },
|
||||||
|
end: { column: 5, line: 1, offset: 4 },
|
||||||
|
source: 'div',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
})
|
})
|
||||||
|
|
|
@ -130,6 +130,8 @@ export interface BaseElementNode extends Node {
|
||||||
type: NodeTypes.ELEMENT
|
type: NodeTypes.ELEMENT
|
||||||
ns: Namespace
|
ns: Namespace
|
||||||
tag: string
|
tag: string
|
||||||
|
tagLoc: SourceLocation
|
||||||
|
closeTagLoc?: SourceLocation
|
||||||
tagType: ElementTypes
|
tagType: ElementTypes
|
||||||
props: Array<AttributeNode | DirectiveNode>
|
props: Array<AttributeNode | DirectiveNode>
|
||||||
children: TemplateChildNode[]
|
children: TemplateChildNode[]
|
||||||
|
|
|
@ -140,6 +140,7 @@ const tokenizer = new Tokenizer(stack, {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
tag: name,
|
tag: name,
|
||||||
ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns),
|
ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns),
|
||||||
|
tagLoc: getLoc(start, end),
|
||||||
tagType: ElementTypes.ELEMENT, // will be refined on tag close
|
tagType: ElementTypes.ELEMENT, // will be refined on tag close
|
||||||
props: [],
|
props: [],
|
||||||
children: [],
|
children: [],
|
||||||
|
@ -165,6 +166,9 @@ const tokenizer = new Tokenizer(stack, {
|
||||||
}
|
}
|
||||||
for (let j = 0; j <= i; j++) {
|
for (let j = 0; j <= i; j++) {
|
||||||
const el = stack.shift()!
|
const el = stack.shift()!
|
||||||
|
if (j === i) {
|
||||||
|
el.closeTagLoc = getLoc(start, end)
|
||||||
|
}
|
||||||
onCloseTag(el, end, j < i)
|
onCloseTag(el, end, j < i)
|
||||||
}
|
}
|
||||||
break
|
break
|
||||||
|
|
|
@ -309,6 +309,11 @@ describe('DOM parser', () => {
|
||||||
type: NodeTypes.ELEMENT,
|
type: NodeTypes.ELEMENT,
|
||||||
ns: Namespaces.HTML,
|
ns: Namespaces.HTML,
|
||||||
tag: 'img',
|
tag: 'img',
|
||||||
|
tagLoc: {
|
||||||
|
start: { offset: 1, line: 1, column: 2 },
|
||||||
|
end: { offset: 4, line: 1, column: 5 },
|
||||||
|
source: 'img',
|
||||||
|
},
|
||||||
tagType: ElementTypes.ELEMENT,
|
tagType: ElementTypes.ELEMENT,
|
||||||
props: [],
|
props: [],
|
||||||
children: [],
|
children: [],
|
||||||
|
|
Loading…
Reference in New Issue