Skip to content

Commit e3f2642

Browse files
committed
compactify
1 parent 9325dc1 commit e3f2642

File tree

1 file changed

+15
-26
lines changed
  • packages/svelte/src/compiler/phases

1 file changed

+15
-26
lines changed

packages/svelte/src/compiler/phases/scope.js

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -344,15 +344,16 @@ class Evaluation {
344344

345345
case 'CallExpression': {
346346
const rune = get_rune(expression, scope);
347+
347348
if (rune) {
349+
const arg = /** @type {Expression | undefined} */ (expression.arguments[0]);
350+
348351
switch (rune) {
349352
case '$state':
350353
case '$state.raw':
351-
if (expression.arguments.length) {
352-
const evaluated = scope.evaluate(
353-
/** @type {Expression} */ (expression.arguments[0])
354-
);
355-
for (let value of evaluated.values) {
354+
case '$derived':
355+
if (arg) {
356+
for (let value of scope.evaluate(arg).values) {
356357
this.values.add(value);
357358
}
358359
} else {
@@ -369,25 +370,12 @@ class Evaluation {
369370
this.values.add(true);
370371
break;
371372

372-
case '$derived': {
373-
const evaluated = scope.evaluate(/** @type {Expression} */ (expression.arguments[0]));
374-
for (let value of evaluated.values) {
375-
this.values.add(value);
376-
}
377-
break;
378-
}
379-
380373
case '$derived.by':
381-
if (expression.arguments[0]?.type === 'ArrowFunctionExpression') {
382-
if (expression.arguments[0].body?.type !== 'BlockStatement') {
383-
const evaluated = scope.evaluate(
384-
/** @type {Expression} */ (expression.arguments[0].body)
385-
);
386-
for (let value of evaluated.values) {
387-
this.values.add(value);
388-
}
389-
break;
374+
if (arg?.type === 'ArrowFunctionExpression' && arg.body.type !== 'BlockStatement') {
375+
for (let value of scope.evaluate(arg.body).values) {
376+
this.values.add(value);
390377
}
378+
break;
391379
}
392380

393381
this.values.add(UNKNOWN);
@@ -397,10 +385,11 @@ class Evaluation {
397385
this.values.add(UNKNOWN);
398386
}
399387
}
400-
} else if (
401-
expression.callee.type === 'Identifier' &&
402-
scope.get(expression.callee.name) === null
403-
) {
388+
389+
break;
390+
}
391+
392+
if (expression.callee.type === 'Identifier' && scope.get(expression.callee.name) === null) {
404393
switch (expression.callee.name) {
405394
case 'Number': {
406395
if (expression.arguments.length) {

0 commit comments

Comments
 (0)