3239 lines
77 KiB
JavaScript
3239 lines
77 KiB
JavaScript
// React JSX tests
|
|
|
|
"use strict";
|
|
|
|
var fbTestFixture = {
|
|
// Taken and adapted from esprima-fb/fbtest.js.
|
|
JSX: {
|
|
"<a />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
|
|
"<n:a n:v />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXNamespacedName",
|
|
namespace: {
|
|
type: "JSXIdentifier",
|
|
name: "n",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [1, 4],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXNamespacedName",
|
|
namespace: {
|
|
type: "JSXIdentifier",
|
|
name: "n",
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "v",
|
|
range: [7, 8],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
value: null,
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
}],
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
"<a n:foo=\"bar\"> {value} <b><c /></b></a>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXNamespacedName",
|
|
namespace: {
|
|
type: "JSXIdentifier",
|
|
name: "n",
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "foo",
|
|
range: [5, 8],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [3, 8],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "bar",
|
|
raw: "\"bar\"",
|
|
range: [9, 14],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [3, 14],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
}],
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [38, 39],
|
|
loc: {
|
|
start: { line: 1, column: 38 },
|
|
end: { line: 1, column: 39 }
|
|
}
|
|
},
|
|
range: [36, 40],
|
|
loc: {
|
|
start: { line: 1, column: 36 },
|
|
end: { line: 1, column: 40 }
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
value: " ",
|
|
raw: " ",
|
|
range: [15, 16],
|
|
loc: {
|
|
start: { line: 1, column: 15 },
|
|
end: { line: 1, column: 16 }
|
|
}
|
|
}, {
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "Identifier",
|
|
name: "value",
|
|
range: [17, 22],
|
|
loc: {
|
|
start: { line: 1, column: 17 },
|
|
end: { line: 1, column: 22 }
|
|
}
|
|
},
|
|
range: [16, 23],
|
|
loc: {
|
|
start: { line: 1, column: 16 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
}, {
|
|
type: "Literal",
|
|
value: " ",
|
|
raw: " ",
|
|
range: [23, 24],
|
|
loc: {
|
|
start: { line: 1, column: 23 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
}, {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [25, 26],
|
|
loc: {
|
|
start: { line: 1, column: 25 },
|
|
end: { line: 1, column: 26 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [24, 27],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [34, 35],
|
|
loc: {
|
|
start: { line: 1, column: 34 },
|
|
end: { line: 1, column: 35 }
|
|
}
|
|
},
|
|
range: [32, 36],
|
|
loc: {
|
|
start: { line: 1, column: 32 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "c",
|
|
range: [28, 29],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 29 }
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [27, 32],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [27, 32],
|
|
loc: {
|
|
start: { line: 1, column: 27 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
}],
|
|
range: [24, 36],
|
|
loc: {
|
|
start: { line: 1, column: 24 },
|
|
end: { line: 1, column: 36 }
|
|
}
|
|
}],
|
|
range: [0, 40],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 40 }
|
|
}
|
|
},
|
|
range: [0, 40],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 40 }
|
|
}
|
|
},
|
|
|
|
"<a b={\" \"} c=\" \" d=\"&\" e=\"&r;\" />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2]
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [3, 4]
|
|
},
|
|
value: {
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "Literal",
|
|
value: " ",
|
|
raw: "\" \"",
|
|
range: [6, 9]
|
|
},
|
|
range: [5, 10]
|
|
},
|
|
range: [3, 10]
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "c",
|
|
range: [11, 12]
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: " ",
|
|
raw: "\" \"",
|
|
range: [13, 16]
|
|
},
|
|
range: [11, 16]
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "d",
|
|
range: [17, 18]
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "&",
|
|
raw: "\"&\"",
|
|
range: [19, 26]
|
|
},
|
|
range: [17, 26]
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "e",
|
|
range: [27, 28]
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "&r;",
|
|
raw: "\"&r;\"",
|
|
range: [29, 37]
|
|
},
|
|
range: [27, 37]
|
|
}],
|
|
range: [0, 40]
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 40]
|
|
},
|
|
range: [0, 40]
|
|
},
|
|
|
|
"<a\n/>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 2
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 2
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 2
|
|
}
|
|
}
|
|
},
|
|
range: [0, 5],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 2
|
|
}
|
|
}
|
|
},
|
|
|
|
"<日本語></日本語>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "日本語",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 5
|
|
}
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "日本語",
|
|
range: [7, 10],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 7
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
range: [5, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
},
|
|
children: [],
|
|
range: [0, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
},
|
|
|
|
"<AbC-def\n test=\"&&\">\nbar\nbaz\n</AbC-def>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "AbC-def",
|
|
range: [1, 8],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 8
|
|
}
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "test",
|
|
range: [11, 15],
|
|
loc: {
|
|
start: {
|
|
line: 2,
|
|
column: 2
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 6
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "&&",
|
|
raw: "\"&&\"",
|
|
range: [16, 31],
|
|
loc: {
|
|
start: {
|
|
line: 2,
|
|
column: 7
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 22
|
|
}
|
|
}
|
|
},
|
|
range: [11, 31],
|
|
loc: {
|
|
start: {
|
|
line: 2,
|
|
column: 2
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 22
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 32],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 2,
|
|
column: 23
|
|
}
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "AbC-def",
|
|
range: [43, 50],
|
|
loc: {
|
|
start: {
|
|
line: 5,
|
|
column: 2
|
|
},
|
|
end: {
|
|
line: 5,
|
|
column: 9
|
|
}
|
|
}
|
|
},
|
|
range: [41, 51],
|
|
loc: {
|
|
start: {
|
|
line: 5,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 5,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
value: "\nbar\nbaz\n",
|
|
raw: "\nbar\nbaz\n",
|
|
range: [32, 41],
|
|
loc: {
|
|
start: {
|
|
line: 2,
|
|
column: 23
|
|
},
|
|
end: {
|
|
line: 5,
|
|
column: 0
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 51],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 5,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
range: [0, 51],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 5,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
|
|
"<a b={x ? <c /> : <d />} />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 2
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [3, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 3
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "ConditionalExpression",
|
|
test: {
|
|
type: "Identifier",
|
|
name: "x",
|
|
range: [6, 7],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 6
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 7
|
|
}
|
|
}
|
|
},
|
|
consequent: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "c",
|
|
range: [11, 12],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 11
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 12
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [10, 15],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 10
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [10, 15],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 10
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
}
|
|
},
|
|
alternate: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "d",
|
|
range: [19, 20],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 19
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 20
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [18, 23],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 18
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 23
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [18, 23],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 18
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 23
|
|
}
|
|
}
|
|
},
|
|
range: [6, 23],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 6
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 23
|
|
}
|
|
}
|
|
},
|
|
range: [5, 24],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 24
|
|
}
|
|
}
|
|
},
|
|
range: [3, 24],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 3
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 24
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 27],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 27
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 27],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 27
|
|
}
|
|
}
|
|
},
|
|
range: [0, 27],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 27
|
|
}
|
|
}
|
|
},
|
|
|
|
"<a>{}</a>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [7, 8],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
range: [5, 9],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "JSXEmptyExpression",
|
|
range: [4, 4],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [3, 5],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
}],
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
range: [0, 9],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 9 }
|
|
}
|
|
},
|
|
|
|
"<a>{/* this is a comment */}</a>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 3],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 3 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [30, 31],
|
|
loc: {
|
|
start: { line: 1, column: 30 },
|
|
end: { line: 1, column: 31 }
|
|
}
|
|
},
|
|
range: [28, 32],
|
|
loc: {
|
|
start: { line: 1, column: 28 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "JSXEmptyExpression",
|
|
range: [4, 27],
|
|
loc: {
|
|
start: { line: 1, column: 4 },
|
|
end: { line: 1, column: 27 }
|
|
}
|
|
},
|
|
range: [3, 28],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 28 }
|
|
}
|
|
}],
|
|
range: [0, 32],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
range: [0, 32],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 32 }
|
|
}
|
|
},
|
|
|
|
"<div>@test content</div>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [20, 23],
|
|
loc: {
|
|
start: { line: 1, column: 20 },
|
|
end: { line: 1, column: 23 }
|
|
}
|
|
},
|
|
range: [18, 24],
|
|
loc: {
|
|
start: { line: 1, column: 18 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
value: "@test content",
|
|
raw: "@test content",
|
|
range: [5, 18],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 18 }
|
|
}
|
|
}],
|
|
range: [0, 24],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
range: [0, 24],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 24 }
|
|
}
|
|
},
|
|
|
|
"<div><br />7x invalid-js-identifier</div>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 5
|
|
}
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [37, 40],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 37
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 40
|
|
}
|
|
}
|
|
},
|
|
range: [35, 41],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 35
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 41
|
|
}
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "br",
|
|
range: [6, 8],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 6
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 8
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [5, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [5, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
}, {
|
|
type: "Literal",
|
|
value: "7x invalid-js-identifier",
|
|
raw: "7x invalid-js-identifier",
|
|
range: [11, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 11
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 41],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 41
|
|
}
|
|
}
|
|
},
|
|
range: [0, 41],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 41
|
|
}
|
|
}
|
|
},
|
|
|
|
"<LeftRight left=<a /> right=<b>monkeys /> gorillas</b> />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "LeftRight",
|
|
range: [1, 10],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "left",
|
|
range: [11, 15],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 11
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [17, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 17
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [16, 21],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 16
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 21
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [16, 21],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 16
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 21
|
|
}
|
|
}
|
|
},
|
|
range: [11, 21],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 11
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 21
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "right",
|
|
range: [22, 27],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 22
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 27
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [29, 30],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 29
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 30
|
|
}
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [28, 31],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 28
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 31
|
|
}
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [52, 53],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 52
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 53
|
|
}
|
|
}
|
|
},
|
|
range: [50, 54],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 50
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 54
|
|
}
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
value: "monkeys /> gorillas",
|
|
raw: "monkeys /> gorillas",
|
|
range: [31, 50],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 31
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 50
|
|
}
|
|
}
|
|
}],
|
|
range: [28, 54],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 28
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 54
|
|
}
|
|
}
|
|
},
|
|
range: [22, 54],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 22
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 54
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 57],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 57
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 57],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 57
|
|
}
|
|
}
|
|
},
|
|
range: [0, 57],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 57
|
|
}
|
|
}
|
|
},
|
|
|
|
"<a.b></a.b>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [1, 4],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 5],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [7, 8],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [7, 10],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
range: [5, 11],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
children: [],
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
range: [0, 11],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 11 }
|
|
}
|
|
},
|
|
|
|
"<a.b.c></a.b.c>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [1, 2],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 2 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [3, 4],
|
|
loc: {
|
|
start: { line: 1, column: 3 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
range: [1, 4],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 4 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "c",
|
|
range: [5, 6],
|
|
loc: {
|
|
start: { line: 1, column: 5 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
range: [1, 6],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 6 }
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [],
|
|
range: [0, 7],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 7 }
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXMemberExpression",
|
|
object: {
|
|
type: "JSXIdentifier",
|
|
name: "a",
|
|
range: [9, 10],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 10 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "b",
|
|
range: [11, 12],
|
|
loc: {
|
|
start: { line: 1, column: 11 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
range: [9, 12],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 12 }
|
|
}
|
|
},
|
|
property: {
|
|
type: "JSXIdentifier",
|
|
name: "c",
|
|
range: [13, 14],
|
|
loc: {
|
|
start: { line: 1, column: 13 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [9, 14],
|
|
loc: {
|
|
start: { line: 1, column: 9 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
range: [7, 15],
|
|
loc: {
|
|
start: { line: 1, column: 7 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
children: [],
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
range: [0, 15],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 15 }
|
|
}
|
|
},
|
|
|
|
// In order to more useful parse errors, we disallow following an
|
|
// JSXElement by a less-than symbol. In the rare case that the binary
|
|
// operator was intended, the tag can be wrapped in parentheses:
|
|
"(<div />) < x;": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "BinaryExpression",
|
|
operator: "<",
|
|
left: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [2, 5],
|
|
loc: {
|
|
start: { line: 1, column: 2 },
|
|
end: { line: 1, column: 5 }
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [],
|
|
range: [1, 8],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [1, 8],
|
|
loc: {
|
|
start: { line: 1, column: 1 },
|
|
end: { line: 1, column: 8 }
|
|
}
|
|
},
|
|
right: {
|
|
type: "Identifier",
|
|
name: "x",
|
|
range: [12, 13],
|
|
loc: {
|
|
start: { line: 1, column: 12 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 13],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 13 }
|
|
}
|
|
},
|
|
range: [0, 14],
|
|
loc: {
|
|
start: { line: 1, column: 0 },
|
|
end: { line: 1, column: 14 }
|
|
}
|
|
},
|
|
|
|
"<div {...props} />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXSpreadAttribute",
|
|
argument: {
|
|
type: "Identifier",
|
|
name: "props",
|
|
range: [9, 14],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 9
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 14
|
|
}
|
|
}
|
|
},
|
|
range: [5, 15],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
},
|
|
range: [0, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
},
|
|
|
|
"<div {...props} post=\"attribute\" />": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
selfClosing: true,
|
|
attributes: [{
|
|
type: "JSXSpreadAttribute",
|
|
argument: {
|
|
type: "Identifier",
|
|
name: "props",
|
|
range: [9, 14],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 9
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 14
|
|
}
|
|
}
|
|
},
|
|
range: [5, 15],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "post",
|
|
range: [16, 20],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 16
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 20
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "attribute",
|
|
raw: "\"attribute\"",
|
|
range: [21, 32],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 21
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 32
|
|
}
|
|
}
|
|
},
|
|
range: [16, 32],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 16
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 32
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
},
|
|
closingElement: null,
|
|
children: [],
|
|
range: [0, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
},
|
|
range: [0, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
},
|
|
|
|
"<div pre=\"leading\" pre2=\"attribute\" {...props}></div>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [1, 4],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 4
|
|
}
|
|
}
|
|
},
|
|
selfClosing: false,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "pre",
|
|
range: [5, 8],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 8
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "leading",
|
|
raw: "\"leading\"",
|
|
range: [9, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 9
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
},
|
|
range: [5, 18],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 18
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXAttribute",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "pre2",
|
|
range: [19, 23],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 19
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 23
|
|
}
|
|
}
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
value: "attribute",
|
|
raw: "\"attribute\"",
|
|
range: [24, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 24
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
},
|
|
range: [19, 35],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 19
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXSpreadAttribute",
|
|
argument: {
|
|
type: "Identifier",
|
|
name: "props",
|
|
range: [40, 45],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 40
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 45
|
|
}
|
|
}
|
|
},
|
|
range: [36, 46],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 36
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 46
|
|
}
|
|
}
|
|
}],
|
|
range: [0, 47],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 47
|
|
}
|
|
}
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
name: "div",
|
|
range: [49, 52],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 49
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 52
|
|
}
|
|
}
|
|
},
|
|
range: [47, 53],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 47
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 53
|
|
}
|
|
}
|
|
},
|
|
children: [],
|
|
range: [0, 53],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 53
|
|
}
|
|
}
|
|
},
|
|
range: [0, 53],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 53
|
|
}
|
|
}
|
|
},
|
|
|
|
"<A aa={aa.bb.cc} bb={bb.cc.dd}><div>{aa.b}</div></A>": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 52,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 52
|
|
}
|
|
},
|
|
range: [0, 52],
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 52,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 52
|
|
}
|
|
},
|
|
range: [0, 52],
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 31,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 0
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 31
|
|
}
|
|
},
|
|
range: [0, 31],
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
start: 3,
|
|
end: 16,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 3
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 16
|
|
}
|
|
},
|
|
range: [3, 16],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 3,
|
|
end: 5,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 3
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 5
|
|
}
|
|
},
|
|
range: [3, 5],
|
|
name: "aa"
|
|
},
|
|
value: {
|
|
type: "JSXExpressionContainer",
|
|
start: 6,
|
|
end: 16,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 6
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 16
|
|
}
|
|
},
|
|
range: [6, 16],
|
|
expression: {
|
|
type: "MemberExpression",
|
|
start: 7,
|
|
end: 15,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 7
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
},
|
|
range: [7, 15],
|
|
object: {
|
|
type: "MemberExpression",
|
|
start: 7,
|
|
end: 12,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 7
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 12
|
|
}
|
|
},
|
|
range: [7, 12],
|
|
object: {
|
|
type: "Identifier",
|
|
start: 7,
|
|
end: 9,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 7
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 9
|
|
}
|
|
},
|
|
range: [7, 9],
|
|
name: "aa"
|
|
},
|
|
property: {
|
|
type: "Identifier",
|
|
start: 10,
|
|
end: 12,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 10
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 12
|
|
}
|
|
},
|
|
range: [10, 12],
|
|
name: "bb"
|
|
},
|
|
computed: false
|
|
},
|
|
property: {
|
|
type: "Identifier",
|
|
start: 13,
|
|
end: 15,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 13
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 15
|
|
}
|
|
},
|
|
range: [13, 15],
|
|
name: "cc"
|
|
},
|
|
computed: false
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXAttribute",
|
|
start: 17,
|
|
end: 30,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 17
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 30
|
|
}
|
|
},
|
|
range: [17, 30],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 17,
|
|
end: 19,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 17
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 19
|
|
}
|
|
},
|
|
range: [17, 19],
|
|
name: "bb"
|
|
},
|
|
value: {
|
|
type: "JSXExpressionContainer",
|
|
start: 20,
|
|
end: 30,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 20
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 30
|
|
}
|
|
},
|
|
range: [20, 30],
|
|
expression: {
|
|
type: "MemberExpression",
|
|
start: 21,
|
|
end: 29,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 21
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 29
|
|
}
|
|
},
|
|
range: [21, 29],
|
|
object: {
|
|
type: "MemberExpression",
|
|
start: 21,
|
|
end: 26,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 21
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 26
|
|
}
|
|
},
|
|
range: [21, 26],
|
|
object: {
|
|
type: "Identifier",
|
|
start: 21,
|
|
end: 23,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 21
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 23
|
|
}
|
|
},
|
|
range: [21, 23],
|
|
name: "bb"
|
|
},
|
|
property: {
|
|
type: "Identifier",
|
|
start: 24,
|
|
end: 26,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 24
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 26
|
|
}
|
|
},
|
|
range: [24, 26],
|
|
name: "cc"
|
|
},
|
|
computed: false
|
|
},
|
|
property: {
|
|
type: "Identifier",
|
|
start: 27,
|
|
end: 29,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 27
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 29
|
|
}
|
|
},
|
|
range: [27, 29],
|
|
name: "dd"
|
|
},
|
|
computed: false
|
|
}
|
|
}
|
|
}],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 2,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 1
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 2
|
|
}
|
|
},
|
|
range: [1, 2],
|
|
name: "A"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 48,
|
|
end: 52,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 48
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 52
|
|
}
|
|
},
|
|
range: [48, 52],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 50,
|
|
end: 51,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 50
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 51
|
|
}
|
|
},
|
|
range: [50, 51],
|
|
name: "A"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXElement",
|
|
start: 31,
|
|
end: 48,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 31
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 48
|
|
}
|
|
},
|
|
range: [31, 48],
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 31,
|
|
end: 36,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 31
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 36
|
|
}
|
|
},
|
|
range: [31, 36],
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 32,
|
|
end: 35,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 32
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 35
|
|
}
|
|
},
|
|
range: [32, 35],
|
|
name: "div"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 42,
|
|
end: 48,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 42
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 48
|
|
}
|
|
},
|
|
range: [42, 48],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 44,
|
|
end: 47,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 44
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 47
|
|
}
|
|
},
|
|
range: [44, 47],
|
|
name: "div"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
start: 36,
|
|
end: 42,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 36
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 42
|
|
}
|
|
},
|
|
range: [36, 42],
|
|
expression: {
|
|
type: "MemberExpression",
|
|
start: 37,
|
|
end: 41,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 37
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 41
|
|
}
|
|
},
|
|
range: [37, 41],
|
|
object: {
|
|
type: "Identifier",
|
|
start: 37,
|
|
end: 39,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 37
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 39
|
|
}
|
|
},
|
|
range: [37, 39],
|
|
name: "aa"
|
|
},
|
|
property: {
|
|
type: "Identifier",
|
|
start: 40,
|
|
end: 41,
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 40
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 41
|
|
}
|
|
},
|
|
range: [40, 41],
|
|
name: "b"
|
|
},
|
|
computed: false
|
|
}
|
|
}]
|
|
}]
|
|
}
|
|
}
|
|
},
|
|
Regression: {
|
|
"<p>foo <a href=\"test\"> bar</a> baz</p> ;": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 40,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 38,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 3,
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 2,
|
|
name: "p"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 34,
|
|
end: 38,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 36,
|
|
end: 37,
|
|
name: "p"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
start: 3,
|
|
end: 7,
|
|
value: "foo ",
|
|
raw: "foo "
|
|
}, {
|
|
type: "JSXElement",
|
|
start: 7,
|
|
end: 30,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 7,
|
|
end: 22,
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
start: 10,
|
|
end: 21,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 10,
|
|
end: 14,
|
|
name: "href"
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
start: 15,
|
|
end: 21,
|
|
value: "test",
|
|
raw: "\"test\""
|
|
}
|
|
}],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 8,
|
|
end: 9,
|
|
name: "a"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 26,
|
|
end: 30,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 28,
|
|
end: 29,
|
|
name: "a"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
start: 22,
|
|
end: 26,
|
|
value: " bar",
|
|
raw: " bar"
|
|
}]
|
|
}, {
|
|
type: "Literal",
|
|
start: 30,
|
|
end: 34,
|
|
value: " baz",
|
|
raw: " baz"
|
|
}]
|
|
}
|
|
},
|
|
|
|
"<div>{<div {...test} />}</div>": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 30,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 30,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 5,
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 4,
|
|
name: "div"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 24,
|
|
end: 30,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 26,
|
|
end: 29,
|
|
name: "div"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
start: 5,
|
|
end: 24,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 6,
|
|
end: 23,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 6,
|
|
end: 23,
|
|
attributes: [{
|
|
type: "JSXSpreadAttribute",
|
|
start: 11,
|
|
end: 20,
|
|
argument: {
|
|
type: "Identifier",
|
|
start: 15,
|
|
end: 19,
|
|
name: "test"
|
|
}
|
|
}],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 7,
|
|
end: 10,
|
|
name: "div"
|
|
},
|
|
selfClosing: true
|
|
},
|
|
closingElement: null,
|
|
children: []
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
"<div>{ {a} }</div>": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 18,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 18,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 5,
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 4,
|
|
name: "div"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 12,
|
|
end: 18,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 14,
|
|
end: 17,
|
|
name: "div"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
start: 5,
|
|
end: 12,
|
|
expression: {
|
|
type: "ObjectExpression",
|
|
start: 7,
|
|
end: 10,
|
|
properties: [{
|
|
type: "Property",
|
|
start: 8,
|
|
end: 9,
|
|
method: false,
|
|
shorthand: true,
|
|
computed: false,
|
|
key: {
|
|
type: "Identifier",
|
|
start: 8,
|
|
end: 9,
|
|
name: "a"
|
|
},
|
|
kind: "init",
|
|
value: {
|
|
type: "Identifier",
|
|
start: 8,
|
|
end: 9,
|
|
name: "a"
|
|
}
|
|
}]
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
"<div>/text</div>": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 16,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 16,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 5,
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 4,
|
|
name: "div"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 10,
|
|
end: 16,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 12,
|
|
end: 15,
|
|
name: "div"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "Literal",
|
|
start: 5,
|
|
end: 10,
|
|
value: "/text",
|
|
raw: "/text"
|
|
}]
|
|
}
|
|
},
|
|
|
|
"<div>{a}{b}</div>": {
|
|
type: "ExpressionStatement",
|
|
start: 0,
|
|
end: 17,
|
|
expression: {
|
|
type: "JSXElement",
|
|
start: 0,
|
|
end: 17,
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
start: 0,
|
|
end: 5,
|
|
attributes: [],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 1,
|
|
end: 4,
|
|
name: "div"
|
|
},
|
|
selfClosing: false
|
|
},
|
|
closingElement: {
|
|
type: "JSXClosingElement",
|
|
start: 11,
|
|
end: 17,
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
start: 13,
|
|
end: 16,
|
|
name: "div"
|
|
}
|
|
},
|
|
children: [{
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "Identifier",
|
|
name: "a",
|
|
range: [6, 7],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 6
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 7
|
|
}
|
|
}
|
|
},
|
|
range: [5, 8],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 5
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 8
|
|
}
|
|
}
|
|
}, {
|
|
type: "JSXExpressionContainer",
|
|
expression: {
|
|
type: "Identifier",
|
|
name: "b",
|
|
range: [9, 10],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 9
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 10
|
|
}
|
|
}
|
|
},
|
|
range: [8, 11],
|
|
loc: {
|
|
start: {
|
|
line: 1,
|
|
column: 8
|
|
},
|
|
end: {
|
|
line: 1,
|
|
column: 11
|
|
}
|
|
}
|
|
}]
|
|
}
|
|
},
|
|
|
|
"<div pre=\"leading\" {...props} />": {
|
|
type: "ExpressionStatement",
|
|
range: [0, 32],
|
|
expression: {
|
|
type: "JSXElement",
|
|
range: [0, 32],
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
range: [0, 32],
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
range: [5, 18],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
range: [5, 8],
|
|
name: "pre"
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
range: [9, 18],
|
|
value: "leading"
|
|
}
|
|
}, {
|
|
type: "JSXSpreadAttribute",
|
|
range: [19, 29],
|
|
argument: {
|
|
type: "Identifier",
|
|
range: [23, 28],
|
|
name: "props"
|
|
}
|
|
}],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
range: [1, 4],
|
|
name: "div"
|
|
},
|
|
selfClosing: true
|
|
},
|
|
closingElement: null,
|
|
children: []
|
|
}
|
|
},
|
|
"<path d=\"M230 80\n\t\tA 45 45, 0, 1, 0, 275 125 \r\n L 275 80 Z\"/>": {
|
|
type: "ExpressionStatement",
|
|
expression: {
|
|
type: "JSXElement",
|
|
range: [0, 64],
|
|
openingElement: {
|
|
type: "JSXOpeningElement",
|
|
range: [0, 64],
|
|
attributes: [{
|
|
type: "JSXAttribute",
|
|
range: [6, 62],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
range: [6, 7],
|
|
name: "d"
|
|
},
|
|
value: {
|
|
type: "Literal",
|
|
range: [8, 62],
|
|
value: "M230 80\n\t\tA 45 45, 0, 1, 0, 275 125 \r\n L 275 80 Z",
|
|
raw: "\"M230 80\n\t\tA 45 45, 0, 1, 0, 275 125 \r\n L 275 80 Z\""
|
|
}
|
|
}],
|
|
name: {
|
|
type: "JSXIdentifier",
|
|
range: [1, 5],
|
|
name: "path"
|
|
},
|
|
selfClosing: true
|
|
},
|
|
closingElement: null,
|
|
children: []
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
if (typeof exports !== "undefined") {
|
|
var test = require("./driver.js").test;
|
|
}
|
|
|
|
for (var ns in fbTestFixture) {
|
|
ns = fbTestFixture[ns];
|
|
for (var code in ns) {
|
|
test(code, {
|
|
type: "Program",
|
|
body: [ns[code]]
|
|
}, {
|
|
ecmaVersion: 6,
|
|
plugins: { jsx: true },
|
|
locations: true,
|
|
ranges: true
|
|
});
|
|
}
|
|
} |