`.
+ const svelteOptions = (svelteAst as Compiler.Root).options;
+ if (svelteOptions?.runes != null) {
+ return svelteOptions?.runes;
+ }
+
+ // Static analysis.
+ const { module, instance } = svelteAst;
+ return (
+ (module != null && hasRuneSymbol(module)) ||
+ (instance != null && hasRuneSymbol(instance))
+ );
+}
+
+function hasRuneSymbol(ast: Compiler.Script | SvAST.Script): boolean {
+ let hasRuneSymbol = false;
+ traverseNodes(ast as unknown as ESTree.Node, {
+ enterNode(node) {
+ if (hasRuneSymbol) {
+ return;
+ }
+ if (node.type === "Identifier" && runeSymbols.includes(node.name)) {
+ hasRuneSymbol = true;
+ }
+ },
+ leaveNode() {
+ // do nothing
+ },
+ });
+
+ return hasRuneSymbol;
+}
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options01-input.svelte b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-input.svelte
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options01-input.svelte
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-input.svelte
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options01-output.json b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-output.json
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options01-output.json
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-output.json
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options01-scope-output.json b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-scope-output.json
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options01-scope-output.json
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options01-scope-output.json
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options02-input.svelte b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-input.svelte
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options02-input.svelte
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-input.svelte
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options02-output.json b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-output.json
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options02-output.json
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-output.json
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options02-scope-output.json b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-scope-output.json
similarity index 100%
rename from tests/fixtures/parser/ast/svelte5/svelte-options02-scope-output.json
rename to tests/fixtures/parser/ast/svelte5/svelte-options/svelte-options02-scope-output.json
diff --git a/tests/fixtures/parser/ast/svelte5/svelte-options/svelte.config.js b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte.config.js
new file mode 100644
index 00000000..cbc7a6c8
--- /dev/null
+++ b/tests/fixtures/parser/ast/svelte5/svelte-options/svelte.config.js
@@ -0,0 +1,2 @@
+/** Config for testing */
+export default {};
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy