Skip to content

Commit 554cd74

Browse files
committed
complete redesign
1 parent 87d5bc2 commit 554cd74

File tree

15 files changed

+212
-313
lines changed

15 files changed

+212
-313
lines changed

packages/svelte/src/compiler/phases/3-transform/client/transform-client.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import { BindDirective } from './visitors/BindDirective.js';
1717
import { BlockStatement } from './visitors/BlockStatement.js';
1818
import { BreakStatement } from './visitors/BreakStatement.js';
1919
import { CallExpression } from './visitors/CallExpression.js';
20-
import { NewExpression } from './visitors/NewExpression.js';
2120
import { ClassBody } from './visitors/ClassBody.js';
2221
import { Comment } from './visitors/Comment.js';
2322
import { Component } from './visitors/Component.js';
@@ -92,7 +91,6 @@ const visitors = {
9291
BlockStatement,
9392
BreakStatement,
9493
CallExpression,
95-
NewExpression,
9694
ClassBody,
9795
Comment,
9896
Component,

packages/svelte/src/compiler/phases/3-transform/client/utils.js

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ import {
1414
} from '../../../../constants.js';
1515
import { dev } from '../../../state.js';
1616
import { get_value } from './visitors/shared/declarations.js';
17-
import { walk } from 'zimmerframe';
1817

1918
/**
2019
* @param {Binding} binding
@@ -352,61 +351,3 @@ export function is_inlinable_expression(node_or_nodes, state) {
352351
}
353352
return has_expression_tag;
354353
}
355-
356-
/**
357-
* @param {Expression} node
358-
* @param {Expression} expression
359-
* @param {ClientTransformState} state
360-
*/
361-
export function trace(node, expression, state) {
362-
const loc = node.loc;
363-
const source = state.source;
364-
let code = '';
365-
let bailout = false;
366-
367-
walk(expression, null, {
368-
AwaitExpression() {
369-
bailout = true;
370-
}
371-
});
372-
373-
if (bailout) {
374-
return expression;
375-
}
376-
377-
if (loc) {
378-
const start = loc.start;
379-
const end = loc.end;
380-
381-
if (start.line === end.line) {
382-
code = source[start.line - 1].slice(start.column, end.column);
383-
} else {
384-
for (let i = start.line; i < end.line + 1; i++) {
385-
const loc = source[i - 1];
386-
387-
if (i === start.line) {
388-
code += loc.slice(start.column) + '\n';
389-
} else if (i === end.line) {
390-
code += loc.slice(0, end.column);
391-
} else {
392-
code += loc + '\n';
393-
}
394-
}
395-
}
396-
} else if (node.start !== undefined && node.end !== undefined) {
397-
code = source.join('\n').slice(node.start, node.end);
398-
} else {
399-
return expression;
400-
}
401-
402-
return b.call(
403-
'$.trace',
404-
b.thunk(expression),
405-
b.literal(code),
406-
node.type === 'CallExpression' ||
407-
node.type === 'MemberExpression' ||
408-
node.type === 'NewExpression'
409-
? b.literal(true)
410-
: undefined
411-
);
412-
}

packages/svelte/src/compiler/phases/3-transform/client/visitors/BlockStatement.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export function BlockStatement(node, context) {
1515
return b.block([
1616
b.return(
1717
b.call(
18-
'$.log_trace',
18+
'$.trace',
1919
b.thunk(
2020
b.block(
2121
node.body.map(

packages/svelte/src/compiler/phases/3-transform/client/visitors/CallExpression.js

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { dev, is_ignored } from '../../../../state.js';
44
import * as b from '../../../../utils/builders.js';
55
import { get_rune } from '../../../scope.js';
66
import { transform_inspect_rune } from '../../utils.js';
7-
import { trace } from '../utils.js';
87

98
/**
109
* @param {CallExpression} node
@@ -62,17 +61,5 @@ export function CallExpression(node, context) {
6261
);
6362
}
6463

65-
if (dev) {
66-
return trace(
67-
node,
68-
{
69-
...node,
70-
callee: /** @type {Expression} */ (context.visit(node.callee)),
71-
arguments: node.arguments.map((arg) => /** @type {Expression} */ (context.visit(arg)))
72-
},
73-
context.state
74-
);
75-
}
76-
7764
context.next();
7865
}

packages/svelte/src/compiler/phases/3-transform/client/visitors/Identifier.js

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@
22
/** @import { Context } from '../types' */
33
import is_reference from 'is-reference';
44
import * as b from '../../../../utils/builders.js';
5-
import { build_getter, trace } from '../utils.js';
6-
import { dev } from '../../../../state.js';
5+
import { build_getter } from '../utils.js';
76

87
/**
98
* @param {Identifier} node
109
* @param {Context} context
1110
*/
1211
export function Identifier(node, context) {
1312
const parent = /** @type {Node} */ (context.path.at(-1));
14-
let transformed;
1513

1614
if (is_reference(node, parent)) {
1715
if (node.name === '$$props') {
@@ -34,18 +32,10 @@ export function Identifier(node, context) {
3432
grand_parent?.type !== 'AssignmentExpression' &&
3533
grand_parent?.type !== 'UpdateExpression'
3634
) {
37-
transformed = b.id('$$props');
35+
return b.id('$$props');
3836
}
3937
}
4038

41-
if (!transformed) {
42-
transformed = build_getter(node, context.state);
43-
}
44-
}
45-
46-
if (transformed && transformed !== node && dev) {
47-
return trace(node, transformed, context.state);
39+
return build_getter(node, context.state);
4840
}
49-
50-
return transformed;
5141
}
Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,19 @@
11
/** @import { MemberExpression, Expression, Super, PrivateIdentifier } from 'estree' */
22
/** @import { Context } from '../types' */
3-
import { dev } from '../../../../state.js';
43
import * as b from '../../../../utils/builders.js';
5-
import { trace } from '../utils.js';
64

75
/**
86
* @param {MemberExpression} node
97
* @param {Context} context
108
*/
119
export function MemberExpression(node, context) {
12-
let transformed;
1310
// rewrite `this.#foo` as `this.#foo.v` inside a constructor
1411
if (node.property.type === 'PrivateIdentifier') {
1512
const field = context.state.private_state.get(node.property.name);
1613
if (field) {
17-
transformed = context.state.in_constructor ? b.member(node, 'v') : b.call('$.get', node);
14+
return context.state.in_constructor ? b.member(node, 'v') : b.call('$.get', node);
1815
}
1916
}
2017

21-
const parent = context.path.at(-1);
22-
23-
if (
24-
dev &&
25-
// Bail out of tracing members if they're used as calees to avoid context issues
26-
(parent?.type !== 'CallExpression' || parent.callee !== node) &&
27-
parent?.type !== 'BindDirective' &&
28-
parent?.type !== 'AssignmentExpression' &&
29-
parent?.type !== 'UpdateExpression' &&
30-
parent?.type !== 'Component' &&
31-
!node.optional
32-
) {
33-
return trace(
34-
node,
35-
transformed || {
36-
...node,
37-
object: /** @type {Expression | Super} */ (context.visit(node.object)),
38-
property: /** @type {Expression | PrivateIdentifier} */ (context.visit(node.property))
39-
},
40-
context.state
41-
);
42-
} else if (transformed) {
43-
return transformed;
44-
}
45-
4618
context.next();
4719
}

packages/svelte/src/compiler/phases/3-transform/client/visitors/NewExpression.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)