File tree 4 files changed +98
-2
lines changed
test/vars/samples/modules-vars
4 files changed +98
-2
lines changed Original file line number Diff line number Diff line change 2
2
3
3
## Unreleased
4
4
5
+ * In ` vars ` array, correctly indicate whether ` module ` variables are ` mutated ` or ` reassigned ` ([ #3215 ] ( https://github.com/sveltejs/svelte/issues/3215 ) )
5
6
* Exclude global variables from ` $capture_state ` ([ #4463 ] ( https://github.com/sveltejs/svelte/issues/4463 ) )
6
7
7
8
## 3.19.1
Original file line number Diff line number Diff line change @@ -780,7 +780,7 @@ export default class Component {
780
780
781
781
const component = this ;
782
782
const { content } = script ;
783
- const { instance_scope, instance_scope_map : map } = this ;
783
+ const { instance_scope, module_scope , instance_scope_map : map } = this ;
784
784
785
785
let scope = instance_scope ;
786
786
@@ -797,7 +797,12 @@ export default class Component {
797
797
const deep = assignee . type === 'MemberExpression' ;
798
798
799
799
names . forEach ( name => {
800
- if ( scope . find_owner ( name ) === instance_scope ) {
800
+ const scope_owner = scope . find_owner ( name ) ;
801
+ if (
802
+ scope_owner !== null
803
+ ? scope_owner === instance_scope
804
+ : module_scope && module_scope . has ( name )
805
+ ) {
801
806
const variable = component . var_lookup . get ( name ) ;
802
807
variable [ deep ? 'mutated' : 'reassigned' ] = true ;
803
808
}
Original file line number Diff line number Diff line change
1
+ export default {
2
+ test ( assert , vars ) {
3
+ assert . deepEqual ( vars , [
4
+ {
5
+ name : "a" ,
6
+ export_name : null ,
7
+ injected : false ,
8
+ module : true ,
9
+ mutated : false ,
10
+ reassigned : true ,
11
+ referenced : false ,
12
+ referenced_from_script : false ,
13
+ writable : true
14
+ } ,
15
+ {
16
+ name : "b" ,
17
+ export_name : null ,
18
+ injected : false ,
19
+ module : true ,
20
+ mutated : true ,
21
+ reassigned : false ,
22
+ referenced : false ,
23
+ referenced_from_script : false ,
24
+ writable : true
25
+ } ,
26
+ {
27
+ name : "c" ,
28
+ export_name : null ,
29
+ injected : false ,
30
+ module : true ,
31
+ mutated : false ,
32
+ reassigned : false ,
33
+ referenced : false ,
34
+ referenced_from_script : false ,
35
+ writable : true
36
+ } ,
37
+ {
38
+ name : "d" ,
39
+ export_name : null ,
40
+ injected : false ,
41
+ module : true ,
42
+ mutated : false ,
43
+ reassigned : false ,
44
+ referenced : false ,
45
+ referenced_from_script : false ,
46
+ writable : true
47
+ } ,
48
+ {
49
+ name : "c" ,
50
+ export_name : null ,
51
+ injected : false ,
52
+ module : false ,
53
+ mutated : false ,
54
+ reassigned : true ,
55
+ referenced : false ,
56
+ referenced_from_script : true ,
57
+ writable : true
58
+ } ,
59
+ {
60
+ name : "foo" ,
61
+ export_name : null ,
62
+ injected : false ,
63
+ module : false ,
64
+ mutated : false ,
65
+ reassigned : false ,
66
+ referenced : false ,
67
+ referenced_from_script : false ,
68
+ writable : false
69
+ }
70
+ ] ) ;
71
+ }
72
+ } ;
Original file line number Diff line number Diff line change
1
+ <script context =' module' >
2
+ let a = {};
3
+ let b = {};
4
+ let c = {};
5
+ let d = {};
6
+ </script >
7
+ <script >
8
+ let c = {};
9
+
10
+ a = 1 ;
11
+ b .x = 1 ;
12
+
13
+ function foo () {
14
+ let d = {};
15
+ c = 1 ;
16
+ d .x = 1 ;
17
+ }
18
+ </script >
You can’t perform that action at this time.
0 commit comments