fix(compiler-sfc): support TS runtime enum in <script setup>

This commit is contained in:
Evan You
2021-06-30 12:03:42 -04:00
parent f8a6b57ddd
commit 1ffd48a2f5
3 changed files with 45 additions and 14 deletions

View File

@@ -937,20 +937,6 @@ export function compileScript(
walkDeclaration(node, setupBindings, userImportAlias)
}
// Type declarations
if (node.type === 'VariableDeclaration' && node.declare) {
s.remove(start, end)
}
// move all type declarations to outer scope
if (
node.type.startsWith('TS') ||
(node.type === 'ExportNamedDeclaration' && node.exportKind === 'type')
) {
recordType(node, declaredTypes)
s.move(start, end, 0)
}
// walk statements & named exports / variable declarations for top level
// await
if (
@@ -986,6 +972,24 @@ export function compileScript(
node
)
}
if (isTS) {
// runtime enum
if (node.type === 'TSEnumDeclaration' && !node.const) {
registerBinding(setupBindings, node.id, BindingTypes.SETUP_CONST)
}
// move all Type declarations to outer scope
if (
node.type.startsWith('TS') ||
(node.type === 'ExportNamedDeclaration' &&
node.exportKind === 'type') ||
(node.type === 'VariableDeclaration' && node.declare)
) {
recordType(node, declaredTypes)
s.move(start, end, 0)
}
}
}
// in parse only mode, we should have collected all the information we need,