diff options
author | Li Jin <dragon-fly@qq.com> | 2022-02-09 10:52:49 +0800 |
---|---|---|
committer | Li Jin <dragon-fly@qq.com> | 2022-02-09 10:52:49 +0800 |
commit | a66ec0d18eba6b38fad25cc88c82f7532d689670 (patch) | |
tree | d125105f8cde4e7a37ca407e7bccedea783a1127 /spec | |
parent | 07a64933f8d956a8bba401db2200e6f7d8244dc9 (diff) | |
download | yuescript-a66ec0d18eba6b38fad25cc88c82f7532d689670.tar.gz yuescript-a66ec0d18eba6b38fad25cc88c82f7532d689670.tar.bz2 yuescript-a66ec0d18eba6b38fad25cc88c82f7532d689670.zip |
fix a case nil coalesing used as update assignment.
Diffstat (limited to 'spec')
-rw-r--r-- | spec/inputs/nil_coalesing.yue | 5 | ||||
-rw-r--r-- | spec/outputs/nil_coalesing.lua | 25 |
2 files changed, 30 insertions, 0 deletions
diff --git a/spec/inputs/nil_coalesing.yue b/spec/inputs/nil_coalesing.yue index facd64c..76915c7 100644 --- a/spec/inputs/nil_coalesing.yue +++ b/spec/inputs/nil_coalesing.yue | |||
@@ -39,5 +39,10 @@ do | |||
39 | do | 39 | do |
40 | a = 1 ?? 2 ?? 3 | 40 | a = 1 ?? 2 ?? 3 |
41 | 41 | ||
42 | do | ||
43 | a.b.c ??= 1 | ||
44 | a = b.x ?? c.x ?? d.x | ||
45 | a.c ??= 1 | ||
46 | |||
42 | nil | 47 | nil |
43 | 48 | ||
diff --git a/spec/outputs/nil_coalesing.lua b/spec/outputs/nil_coalesing.lua index b434671..e1547df 100644 --- a/spec/outputs/nil_coalesing.lua +++ b/spec/outputs/nil_coalesing.lua | |||
@@ -153,4 +153,29 @@ do | |||
153 | end | 153 | end |
154 | end | 154 | end |
155 | end | 155 | end |
156 | do | ||
157 | local _obj_0 = a.b | ||
158 | if _obj_0.c == nil then | ||
159 | _obj_0.c = 1 | ||
160 | end | ||
161 | local a | ||
162 | do | ||
163 | local _exp_0 = b.x | ||
164 | if _exp_0 ~= nil then | ||
165 | a = _exp_0 | ||
166 | else | ||
167 | do | ||
168 | local _exp_1 = c.x | ||
169 | if _exp_1 ~= nil then | ||
170 | a = _exp_1 | ||
171 | else | ||
172 | a = d.x | ||
173 | end | ||
174 | end | ||
175 | end | ||
176 | end | ||
177 | if a.c == nil then | ||
178 | a.c = 1 | ||
179 | end | ||
180 | end | ||
156 | return nil | 181 | return nil |