aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-19 00:15:59 +0900
committerFumitoshi Ukai <fumitoshi.ukai@gmail.com>2015-06-19 00:15:59 +0900
commite16c2b73e2fb6549b8988cb986ed77a96395c7b4 (patch)
tree637e8839f0a2d408ae05c5a2b4f1ff4b0c6cf9fc
parent461941ea35e62f95ba46b8f4f39c35204073364e (diff)
downloadkati-e16c2b73e2fb6549b8988cb986ed77a96395c7b4.tar.gz
add param.mk
no need to assign/restore call parameter
-rw-r--r--eval.go2
-rw-r--r--expr.go4
-rw-r--r--func.go12
-rw-r--r--testcase/param.mk15
4 files changed, 18 insertions, 15 deletions
diff --git a/eval.go b/eval.go
index 2bd1965..173ec45 100644
--- a/eval.go
+++ b/eval.go
@@ -94,7 +94,7 @@ func (ev *Evaluator) evalAssign(ast *AssignAST) {
if katiLogFlag {
Logf("ASSIGN: %s=%q (flavor:%q)", lhs, rhs, rhs.Flavor())
}
- if len(lhs) == 0 {
+ if lhs == "" {
Error(ast.filename, ast.lineno, "*** empty variable name.")
}
ev.outVars.Assign(lhs, rhs)
diff --git a/expr.go b/expr.go
index 644a790..ad05c4b 100644
--- a/expr.go
+++ b/expr.go
@@ -181,8 +181,8 @@ func (p paramref) Eval(w io.Writer, ev *Evaluator) {
if n < len(ev.paramVars) {
ev.paramVars[n].Eval(w, ev)
} else {
- // out of range?
- // panic(fmt.Sprintf("out of range %d: %d", n, len(ev.paramVars)))
+ vv := ev.LookupVar(fmt.Sprintf("%d", n))
+ vv.Eval(w, ev)
}
traceEvent.end(te)
}
diff --git a/func.go b/func.go
index 0bcc7a8..58ddd8e 100644
--- a/func.go
+++ b/func.go
@@ -824,23 +824,11 @@ func (f *funcCall) Eval(w io.Writer, ev *Evaluator) {
oldParams := ev.paramVars
ev.paramVars = args
- var restores []func()
- for i, arg := range args {
- name := strconv.FormatInt(int64(i), 10)
- restores = append(restores, ev.outVars.save(name))
- ev.outVars.Assign(name, &AutomaticVar{
- value: arg,
- })
- }
-
var buf bytes.Buffer
if katiLogFlag {
w = io.MultiWriter(w, &buf)
}
v.Eval(w, ev)
- for _, restore := range restores {
- restore()
- }
ev.paramVars = oldParams
traceEvent.end(te)
if katiLogFlag {
diff --git a/testcase/param.mk b/testcase/param.mk
new file mode 100644
index 0000000..990d358
--- /dev/null
+++ b/testcase/param.mk
@@ -0,0 +1,15 @@
+
+1:=foo
+$(info $(1) is foo)
+
+define param
+$(eval 1:=bar) param1-1=$(1) $(call param2,$(1))
+endef
+
+define param2
+param2-1=$(1)
+endef
+
+test:
+ @echo call param $(call param,baz)
+ @echo 1=$(1)