@@ -26,55 +26,9 @@ export function memoize_expression(state, value) {
26
26
* @param {Expression } value
27
27
*/
28
28
export function get_expression_id ( state , value ) {
29
- for ( let i = 0 ; i < state . expressions . length ; i += 1 ) {
30
- if ( compare_expressions ( state . expressions [ i ] , value ) ) {
31
- return b . id ( `$${ i } ` ) ;
32
- }
33
- }
34
-
35
29
return b . id ( `$${ state . expressions . push ( value ) - 1 } ` ) ;
36
30
}
37
31
38
- /**
39
- * Returns true of two expressions have an identical AST shape
40
- * @param {Expression } a
41
- * @param {Expression } b
42
- */
43
- function compare_expressions ( a , b ) {
44
- if ( a . type !== b . type ) {
45
- return false ;
46
- }
47
-
48
- for ( const key in a ) {
49
- if ( key === 'type' || key === 'metadata' || key === 'loc' || key === 'start' || key === 'end' ) {
50
- continue ;
51
- }
52
-
53
- const va = /** @type {any } */ ( a ) [ key ] ;
54
- const vb = /** @type {any } */ ( b ) [ key ] ;
55
-
56
- if ( ( typeof va === 'object' ) !== ( typeof vb === 'object' ) ) {
57
- return false ;
58
- }
59
-
60
- if ( typeof va !== 'object' || va === null || vb === null ) {
61
- if ( va !== vb ) return false ;
62
- } else if ( Array . isArray ( va ) ) {
63
- if ( va . length !== vb . length ) {
64
- return false ;
65
- }
66
-
67
- if ( va . some ( ( v , i ) => ! compare_expressions ( v , vb [ i ] ) ) ) {
68
- return false ;
69
- }
70
- } else if ( ! compare_expressions ( va , vb ) ) {
71
- return false ;
72
- }
73
- }
74
-
75
- return true ;
76
- }
77
-
78
32
/**
79
33
* @param {Array<AST.Text | AST.ExpressionTag> } values
80
34
* @param {(node: AST.SvelteNode, state: any) => any } visit
0 commit comments