compiler: count current amount of locals correctly

This commit is contained in:
Evgenii Stratonikov 2020-06-26 13:24:17 +03:00
parent 637f75d9ef
commit c57d4cfff2
2 changed files with 21 additions and 4 deletions

View file

@ -139,16 +139,18 @@ func (c *funcScope) stackSize() int64 {
// newVariable creates a new local variable or argument in the scope of the function.
func (c *funcScope) newVariable(t varType, name string) int {
c.i++
var n int
switch t {
case varLocal:
c.locals[name] = c.i
n = len(c.locals)
c.locals[name] = n
case varArgument:
c.arguments[name] = c.i
n = len(c.arguments)
c.arguments[name] = n
default:
panic("invalid type")
}
return c.i
return n
}
// newLocal creates a new local variable into the scope of the function.