@@ -154,7 +154,11 @@ func lowerIdent(n ast.Expr, state *compState, reg int) (identData, int) {
154
154
switch nObj := nn .Obj .(type ) {
155
155
case * ast.TableAccessor :
156
156
lowerIdentHelper (nObj , state , data )
157
- data .keyRK , _ = expr (nn .Key , state , reg + 1 , false ).RK ()
157
+ usedreg := false
158
+ data .keyRK , usedreg = expr (nn .Key , state , reg + 1 , false ).RK ()
159
+ if usedreg {
160
+ return * data , 2
161
+ }
158
162
return * data , 1
159
163
case * ast.ConstIdent :
160
164
regs := 1
@@ -188,11 +192,19 @@ func lowerIdent(n ast.Expr, state *compState, reg int) (identData, int) {
188
192
return * data , regs
189
193
case * ast.Parens :
190
194
expr (nObj .Inner , state , data .reg , false ).To (false )
191
- data .keyRK , _ = expr (nn .Key , state , reg + 1 , false ).RK ()
195
+ usedreg := false
196
+ data .keyRK , usedreg = expr (nn .Key , state , reg + 1 , false ).RK ()
197
+ if usedreg {
198
+ return * data , 2
199
+ }
192
200
return * data , 1
193
201
case * ast.FuncCall :
194
202
expr (nObj , state , data .reg , false ).To (false )
195
- data .keyRK , _ = expr (nn .Key , state , reg + 1 , false ).RK ()
203
+ usedreg := false
204
+ data .keyRK , usedreg = expr (nn .Key , state , reg + 1 , false ).RK ()
205
+ if usedreg {
206
+ return * data , 2
207
+ }
196
208
return * data , 1
197
209
default :
198
210
luautil .Raise ("Syntax error" , luautil .ErrTypGenSyntax ) // TODO: Better errors
0 commit comments