diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-04-28 02:48:03 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-04-28 16:19:41 +0900 |
commit | c8bc731ace04bbe477583ba1154aa29d430a323e (patch) | |
tree | c180271122579346e28d050f3a9eaf83978a66c7 /func.go | |
parent | d8cec17d195a8149bd3c7ca913e237e9d9e8bca8 (diff) | |
download | kati-c8bc731ace04bbe477583ba1154aa29d430a323e.tar.gz |
Make it possible to serialize vars
Diffstat (limited to 'func.go')
-rw-r--r-- | func.go | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -137,6 +137,14 @@ func (c *fclosure) String() string { return fmt.Sprintf("$%s %s%c", arg0, strings.Join(args, ","), cp) } +func (c *fclosure) Serialize() SerializableVar{ + r := SerializableVar{Type: "func"} + for _, a := range c.args { + r.Children = append(r.Children, a.Serialize()) + } + return r +} + // http://www.gnu.org/software/make/manual/make.html#Text-Functions type funcSubst struct{ fclosure } @@ -703,6 +711,12 @@ type funcNop struct{ expr string } func (f *funcNop) String() string { return f.expr } func (f *funcNop) Eval(io.Writer, *Evaluator) {} +func (f *funcNop) Serialize() SerializableVar { + return SerializableVar{ + Type: "funcNop", + V: f.expr, + } +} func parseAssignLiteral(s string) (lhs, op string, rhs Value, ok bool) { eq := strings.Index(s, "=") @@ -768,6 +782,17 @@ func (f *funcEvalAssign) Eval(w io.Writer, ev *Evaluator) { ev.outVars.Assign(f.lhs, rvalue) } +func (f *funcEvalAssign) Serialize() SerializableVar { + return SerializableVar{ + Type: "funcEvalAssign", + Children: []SerializableVar{ + SerializableVar{V: f.lhs}, + SerializableVar{V: f.op}, + f.rhs.Serialize(), + }, + } +} + // http://www.gnu.org/software/make/manual/make.html#Origin-Function type funcOrigin struct{ fclosure } |