summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/d5/tengo/v2
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/d5/tengo/v2')
-rw-r--r--vendor/github.com/d5/tengo/v2/README.md2
-rw-r--r--vendor/github.com/d5/tengo/v2/compiler.go9
2 files changed, 9 insertions, 2 deletions
diff --git a/vendor/github.com/d5/tengo/v2/README.md b/vendor/github.com/d5/tengo/v2/README.md
index aa9caa73..b339bfd4 100644
--- a/vendor/github.com/d5/tengo/v2/README.md
+++ b/vendor/github.com/d5/tengo/v2/README.md
@@ -144,7 +144,7 @@ fmt.Println(res) // "success"
- [Interoperability](https://github.com/d5/tengo/blob/master/docs/interoperability.md)
- [Tengo CLI](https://github.com/d5/tengo/blob/master/docs/tengo-cli.md)
- [Standard Library](https://github.com/d5/tengo/blob/master/docs/stdlib.md)
-- Syntax Highlighters: [VSCode](https://github.com/lissein/vscode-tengo), [Atom](https://github.com/d5/tengo-atom)
+- Syntax Highlighters: [VSCode](https://github.com/lissein/vscode-tengo), [Atom](https://github.com/d5/tengo-atom), [Vim](https://github.com/geseq/tengo-vim)
- **Why the name Tengo?** It's from [1Q84](https://en.wikipedia.org/wiki/1Q84).
diff --git a/vendor/github.com/d5/tengo/v2/compiler.go b/vendor/github.com/d5/tengo/v2/compiler.go
index 6591603c..0d46a4d7 100644
--- a/vendor/github.com/d5/tengo/v2/compiler.go
+++ b/vendor/github.com/d5/tengo/v2/compiler.go
@@ -692,12 +692,15 @@ func (c *Compiler) compileAssign(
return c.errorf(node, "operator ':=' not allowed with selector")
}
+ _, isFunc := rhs[0].(*parser.FuncLit)
symbol, depth, exists := c.symbolTable.Resolve(ident, false)
if op == token.Define {
if depth == 0 && exists {
return c.errorf(node, "'%s' redeclared in this block", ident)
}
- symbol = c.symbolTable.Define(ident)
+ if isFunc {
+ symbol = c.symbolTable.Define(ident)
+ }
} else {
if !exists {
return c.errorf(node, "unresolved reference '%s'", ident)
@@ -718,6 +721,10 @@ func (c *Compiler) compileAssign(
}
}
+ if op == token.Define && !isFunc {
+ symbol = c.symbolTable.Define(ident)
+ }
+
switch op {
case token.AddAssign:
c.emit(node, parser.OpBinaryOp, int(token.Add))