@@ -56,7 +56,13 @@ import { DEFINE_EXPOSE, processDefineExpose } from './script/defineExpose'
56
56
import { DEFINE_OPTIONS , processDefineOptions } from './script/defineOptions'
57
57
import { DEFINE_SLOTS , processDefineSlots } from './script/defineSlots'
58
58
import { DEFINE_MODEL , processDefineModel } from './script/defineModel'
59
- import { getImportedName , isCallOf , isLiteralNode } from './script/utils'
59
+ import {
60
+ getImportedName ,
61
+ isCallOf ,
62
+ isJS ,
63
+ isLiteralNode ,
64
+ isTS ,
65
+ } from './script/utils'
60
66
import { analyzeScriptBindings } from './script/analyzeScriptBindings'
61
67
import { isImportUsed } from './script/importUsageCheck'
62
68
import { processAwait } from './script/topLevelAwait'
@@ -173,6 +179,8 @@ export function compileScript(
173
179
const scopeId = options . id ? options . id . replace ( / ^ d a t a - v - / , '' ) : ''
174
180
const scriptLang = script && script . lang
175
181
const scriptSetupLang = scriptSetup && scriptSetup . lang
182
+ const isJSOrTS =
183
+ isJS ( scriptLang , scriptSetupLang ) || isTS ( scriptLang , scriptSetupLang )
176
184
177
185
if ( script && scriptSetup && scriptLang !== scriptSetupLang ) {
178
186
throw new Error (
@@ -181,21 +189,28 @@ export function compileScript(
181
189
)
182
190
}
183
191
184
- const ctx = new ScriptCompileContext ( sfc , options )
185
-
186
192
if ( ! scriptSetup ) {
187
193
if ( ! script ) {
188
194
throw new Error ( `[@vue/compiler-sfc] SFC contains no <script> tags.` )
189
195
}
196
+
190
197
// normal <script> only
198
+ if ( script . lang && ! isJSOrTS ) {
199
+ // do not process non js/ts script blocks
200
+ return script
201
+ }
202
+
203
+ const ctx = new ScriptCompileContext ( sfc , options )
191
204
return processNormalScript ( ctx , scopeId )
192
205
}
193
206
194
- if ( scriptSetupLang && ! ctx . isJS && ! ctx . isTS ) {
207
+ if ( scriptSetupLang && ! isJSOrTS ) {
195
208
// do not process non js/ts script blocks
196
209
return scriptSetup
197
210
}
198
211
212
+ const ctx = new ScriptCompileContext ( sfc , options )
213
+
199
214
// metadata that needs to be returned
200
215
// const ctx.bindingMetadata: BindingMetadata = {}
201
216
const scriptBindings : Record < string , BindingTypes > = Object . create ( null )
0 commit comments