@@ -33,7 +33,7 @@ export interface SFCBlock {
33
33
34
34
export interface SFCTemplateBlock extends SFCBlock {
35
35
type : 'template'
36
- functional ?: boolean
36
+ ast : ElementNode
37
37
}
38
38
39
39
export interface SFCScriptBlock extends SFCBlock {
@@ -79,7 +79,7 @@ export function parse(
79
79
source : string ,
80
80
{
81
81
sourceMap = true ,
82
- filename = 'component .vue' ,
82
+ filename = 'anonymous .vue' ,
83
83
sourceRoot = '' ,
84
84
pad = false ,
85
85
compiler = CompilerDOM
@@ -143,39 +143,40 @@ export function parse(
143
143
switch ( node . tag ) {
144
144
case 'template' :
145
145
if ( ! descriptor . template ) {
146
- descriptor . template = createBlock (
146
+ const templateBlock = ( descriptor . template = createBlock (
147
147
node ,
148
148
source ,
149
149
false
150
- ) as SFCTemplateBlock
150
+ ) as SFCTemplateBlock )
151
+ templateBlock . ast = node
151
152
} else {
152
153
errors . push ( createDuplicateBlockError ( node ) )
153
154
}
154
155
break
155
156
case 'script' :
156
- const block = createBlock ( node , source , pad ) as SFCScriptBlock
157
- const isSetup = ! ! block . attrs . setup
157
+ const scriptBlock = createBlock ( node , source , pad ) as SFCScriptBlock
158
+ const isSetup = ! ! scriptBlock . attrs . setup
158
159
if ( isSetup && ! descriptor . scriptSetup ) {
159
- descriptor . scriptSetup = block
160
+ descriptor . scriptSetup = scriptBlock
160
161
break
161
162
}
162
163
if ( ! isSetup && ! descriptor . script ) {
163
- descriptor . script = block
164
+ descriptor . script = scriptBlock
164
165
break
165
166
}
166
167
errors . push ( createDuplicateBlockError ( node , isSetup ) )
167
168
break
168
169
case 'style' :
169
- const style = createBlock ( node , source , pad ) as SFCStyleBlock
170
- if ( style . attrs . vars ) {
170
+ const styleBlock = createBlock ( node , source , pad ) as SFCStyleBlock
171
+ if ( styleBlock . attrs . vars ) {
171
172
errors . push (
172
173
new SyntaxError (
173
174
`<style vars> has been replaced by a new proposal: ` +
174
175
`https://github.com/vuejs/rfcs/pull/231`
175
176
)
176
177
)
177
178
}
178
- descriptor . styles . push ( style )
179
+ descriptor . styles . push ( styleBlock )
179
180
break
180
181
default :
181
182
descriptor . customBlocks . push ( createBlock ( node , source , pad ) )
@@ -290,8 +291,6 @@ function createBlock(
290
291
} else if ( p . name === 'module' ) {
291
292
; ( block as SFCStyleBlock ) . module = attrs [ p . name ]
292
293
}
293
- } else if ( type === 'template' && p . name === 'functional' ) {
294
- ; ( block as SFCTemplateBlock ) . functional = true
295
294
} else if ( type === 'script' && p . name === 'setup' ) {
296
295
; ( block as SFCScriptBlock ) . setup = attrs . setup
297
296
}
0 commit comments