diff --git a/packages/compiler-sfc/__tests__/compileScript.spec.ts b/packages/compiler-sfc/__tests__/compileScript.spec.ts
index 134beff9668..5ed7d2f037d 100644
--- a/packages/compiler-sfc/__tests__/compileScript.spec.ts
+++ b/packages/compiler-sfc/__tests__/compileScript.spec.ts
@@ -1543,4 +1543,19 @@ describe('compileScript', () => {
)
assertCode(content)
})
+
+ test('should not compile unrecognized language', () => {
+ const { content, lang, scriptAst } = compile(
+ ``,
+ )
+ expect(content).toMatch(`export default
+ data: ->
+ myVal: 0`)
+ expect(lang).toBe('coffee')
+ expect(scriptAst).not.toBeDefined()
+ })
})
diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts
index 2e1e0ec34de..b3b1d526464 100644
--- a/packages/compiler-sfc/src/compileScript.ts
+++ b/packages/compiler-sfc/src/compileScript.ts
@@ -55,7 +55,13 @@ import { DEFINE_EXPOSE, processDefineExpose } from './script/defineExpose'
import { DEFINE_OPTIONS, processDefineOptions } from './script/defineOptions'
import { DEFINE_SLOTS, processDefineSlots } from './script/defineSlots'
import { DEFINE_MODEL, processDefineModel } from './script/defineModel'
-import { getImportedName, isCallOf, isLiteralNode } from './script/utils'
+import {
+ getImportedName,
+ isCallOf,
+ isJS,
+ isLiteralNode,
+ isTS,
+} from './script/utils'
import { analyzeScriptBindings } from './script/analyzeScriptBindings'
import { isImportUsed } from './script/importUsageCheck'
import { processAwait } from './script/topLevelAwait'
@@ -167,18 +173,26 @@ export function compileScript(
)
}
- const ctx = new ScriptCompileContext(sfc, options)
const { script, scriptSetup, source, filename } = sfc
const hoistStatic = options.hoistStatic !== false && !script
const scopeId = options.id ? options.id.replace(/^data-v-/, '') : ''
const scriptLang = script && script.lang
const scriptSetupLang = scriptSetup && scriptSetup.lang
+ const isJSOrTS =
+ isJS(scriptLang, scriptSetupLang) || isTS(scriptLang, scriptSetupLang)
if (!scriptSetup) {
if (!script) {
throw new Error(`[@vue/compiler-sfc] SFC contains no