}"
`;
+exports[`SFC compile <script setup> dev mode import usage check attribute expressions 1`] = `
+"import { defineComponent as _defineComponent } from 'vue'
+import { bar, baz } from './x'
+
+export default /*#__PURE__*/_defineComponent({
+ setup(__props, { expose }) {
+ expose()
+
+ const cond = true
+
+return { cond, bar, baz }
+}
+
+})"
+`;
+
exports[`SFC compile <script setup> dev mode import usage check components 1`] = `
"import { defineComponent as _defineComponent } from 'vue'
import { FooBar, FooBaz, FooQux, foo } from './x'
assertCode(content)
})
+ // https://github.com/vuejs/vue-next/issues/4599
+ test('attribute expressions', () => {
+ const { content } = compile(`
+ <script setup lang="ts">
+ import { bar, baz } from './x'
+ const cond = true
+ </script>
+ <template>
+ <div :class="[cond ? '' : bar(), 'default']" :style="baz"></div>
+ </template>
+ `)
+ expect(content).toMatch(`return { cond, bar, baz }`)
+ assertCode(content)
+ })
+
test('vue interpolations', () => {
const { content } = compile(`
<script setup lang="ts">
function stripStrings(exp: string) {
return exp
- .replace(/'[^']+'|"[^"]+"/g, '')
+ .replace(/'[^']*'|"[^"]*"/g, '')
.replace(/`[^`]+`/g, stripTemplateString)
}