Skip to content

Commit 53fe68b

Browse files
committed
WIP
1 parent 06811f0 commit 53fe68b

File tree

3 files changed

+44
-25
lines changed

3 files changed

+44
-25
lines changed

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

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -359,28 +359,32 @@ export function is_inlinable_expression(node_or_nodes, state) {
359359
*/
360360
export function trace(node, expression, state) {
361361
const loc = node.loc;
362-
if (!loc) {
363-
return expression;
364-
}
365-
const start = loc.start;
366-
const end = loc.end;
367362
const source = state.source;
368363
let code = '';
369364

370-
if (start.line === end.line) {
371-
code = source[start.line - 1].slice(start.column, end.column);
372-
} else {
373-
for (let i = start.line; i < end.line + 1; i++) {
374-
const loc = source[i - 1];
365+
if (loc) {
366+
const start = loc.start;
367+
const end = loc.end;
375368

376-
if (i === start.line) {
377-
code += loc.slice(start.column) + '\n';
378-
} else if (i === end.line) {
379-
code += loc.slice(0, end.column);
380-
} else {
381-
code += loc + '\n';
369+
if (start.line === end.line) {
370+
code = source[start.line - 1].slice(start.column, end.column);
371+
} else {
372+
for (let i = start.line; i < end.line + 1; i++) {
373+
const loc = source[i - 1];
374+
375+
if (i === start.line) {
376+
code += loc.slice(start.column) + '\n';
377+
} else if (i === end.line) {
378+
code += loc.slice(0, end.column);
379+
} else {
380+
code += loc + '\n';
381+
}
382382
}
383383
}
384+
} else if (node.start !== undefined && node.end !== undefined) {
385+
code = source.join('\n').slice(node.start, node.end);
386+
} else {
387+
return expression;
384388
}
385389

386390
return b.call(

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,17 @@ export function MemberExpression(node, context) {
1818
}
1919
}
2020

21-
if (dev) {
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+
) {
2232
return trace(
2333
node,
2434
transformed || {
@@ -28,6 +38,8 @@ export function MemberExpression(node, context) {
2838
},
2939
context.state
3040
);
41+
} else if (transformed) {
42+
return transformed;
3143
}
3244

3345
context.next();

packages/svelte/src/internal/client/dev/tracing.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,16 @@ export function log_trace(fn, label) {
6060
var start = performance.now();
6161
var value = fn();
6262
var time = (performance.now() - start).toFixed(2);
63-
// eslint-disable-next-line no-console
64-
console.group(`${label} %c(${time}ms)`, 'color: grey');
65-
log_expressions(tracing_expressions);
66-
// eslint-disable-next-line no-console
67-
console.groupEnd();
63+
if (tracing_expressions.length > 0) {
64+
// eslint-disable-next-line no-console
65+
console.group(`${label} %c(${time}ms)`, 'color: grey');
66+
log_expressions(tracing_expressions);
67+
// eslint-disable-next-line no-console
68+
console.groupEnd();
69+
} else {
70+
// eslint-disable-next-line no-console
71+
console.log(`${label} %cno reactive dependencies (${time}ms)`, 'color: grey');
72+
}
6873

6974
if (previously_tracing_expressions !== null) {
7075
previously_tracing_expressions.push(...tracing_expressions);
@@ -123,9 +128,7 @@ export function trace(fn, label, computed) {
123128
if (previously_tracing_expressions !== null) {
124129
previously_tracing_expressions.push(...tracing_expressions);
125130
}
126-
} else if (
127-
previously_tracing_expressions.length !== 0
128-
) {
131+
} else if (tracing_expressions.length !== 0) {
129132
previously_tracing_expressions.push({
130133
changed: tracing_expressions.some((e) => e.changed),
131134
label,

0 commit comments

Comments
 (0)