diff options
| author | Mel <einebeere@gmail.com> | 2022-08-16 19:49:59 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-16 20:12:20 +0000 |
| commit | 64d438c91ace51bfda7bff50d381b62f5785f72a (patch) | |
| tree | ea1b6a23a6ad05c040603dd4d00887332391e197 /pkg/lang/compiler/compiler.go | |
| parent | 8193e5c590177b91b51acd818e8a365ab6845988 (diff) | |
| download | jinx-64d438c91ace51bfda7bff50d381b62f5785f72a.tar.zst jinx-64d438c91ace51bfda7bff50d381b62f5785f72a.zip | |
Ensure correct argument stack order in all cases
Diffstat (limited to 'pkg/lang/compiler/compiler.go')
| -rw-r--r-- | pkg/lang/compiler/compiler.go | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/pkg/lang/compiler/compiler.go b/pkg/lang/compiler/compiler.go index d647aff..631dfec 100644 --- a/pkg/lang/compiler/compiler.go +++ b/pkg/lang/compiler/compiler.go @@ -795,8 +795,8 @@ func (comp *Compiler) compileCallExpr(t *code.Builder, expr ast.ExprCall) error return err } - for i := 0; i < len(expr.Args); i++ { - if err := comp.compileExpr(t, expr.Args[i]); err != nil { + for _, arg := range expr.Args { + if err := comp.compileExpr(t, arg); err != nil { return err } } @@ -965,9 +965,7 @@ func (comp *Compiler) compileBlockNode(t *code.Builder, block ast.BlockNode) err } func (comp *Compiler) compileFn(t *code.Builder, block ast.BlockNode, args []ast.IdentNode, addMissingReturn bool) error { - // Arguments are declared in reverse - for i := len(args) - 1; i >= 0; i-- { - arg := args[i] + for _, arg := range args { if _, ok := comp.scopes.Declare(arg.Value); !ok { return fmt.Errorf("variable %s already declared", arg.Value) } |
