diff options
author | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-19 00:15:59 +0900 |
---|---|---|
committer | Fumitoshi Ukai <fumitoshi.ukai@gmail.com> | 2015-06-19 00:15:59 +0900 |
commit | e16c2b73e2fb6549b8988cb986ed77a96395c7b4 (patch) | |
tree | 637e8839f0a2d408ae05c5a2b4f1ff4b0c6cf9fc | |
parent | 461941ea35e62f95ba46b8f4f39c35204073364e (diff) | |
download | kati-e16c2b73e2fb6549b8988cb986ed77a96395c7b4.tar.gz |
add param.mk
no need to assign/restore call parameter
-rw-r--r-- | eval.go | 2 | ||||
-rw-r--r-- | expr.go | 4 | ||||
-rw-r--r-- | func.go | 12 | ||||
-rw-r--r-- | testcase/param.mk | 15 |
4 files changed, 18 insertions, 15 deletions
@@ -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) @@ -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) } @@ -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) |