change f.closure.args[0] has "(funcname", or "{funcname".
remove f.closure.expr
fclosure.String would not be called so often now
(except debug logging?), and keeping expr would require lots of memory.
diff --git a/expr_test.go b/expr_test.go
index 0cf245a..5682855 100644
--- a/expr_test.go
+++ b/expr_test.go
@@ -53,6 +53,7 @@
&funcSubst{
fclosure: fclosure{
args: []Value{
+ literal("(subst"),
varref{
varname: literal("space"),
},
@@ -63,7 +64,6 @@
varname: literal("foo"),
},
},
- expr: "$(subst $(space),$(,),$(foo))",
},
},
literal("/bar"),
@@ -74,6 +74,7 @@
val: &funcSubst{
fclosure: fclosure{
args: []Value{
+ literal("(subst"),
varref{
varname: literal("space"),
},
@@ -87,7 +88,6 @@
},
},
},
- expr: "$(subst $(space),$,,$(foo))",
},
},
},
@@ -96,9 +96,9 @@
val: &funcShell{
fclosure: fclosure{
args: []Value{
+ literal("(shell"),
literal("echo '()'"),
},
- expr: `$(shell echo '()')`,
},
},
},
@@ -107,9 +107,9 @@
val: &funcShell{
fclosure: fclosure{
args: []Value{
+ literal("{shell"),
literal("echo '()'"),
},
- expr: `${shell echo '()'}`,
},
},
},
@@ -119,9 +119,9 @@
&funcShell{
fclosure: fclosure{
args: []Value{
+ literal("(shell"),
literal("echo '"),
},
- expr: `$(shell echo ')`,
},
},
literal("')"),
@@ -132,9 +132,9 @@
val: &funcShell{
fclosure: fclosure{
args: []Value{
+ literal("{shell"),
literal("echo ')'"),
},
- expr: `${shell echo ')'}`,
},
},
},
@@ -144,9 +144,9 @@
&funcShell{
fclosure: fclosure{
args: []Value{
+ literal("{shell"),
literal("echo '"),
},
- expr: `${shell echo '}`,
},
},
literal("'}"),
@@ -157,9 +157,9 @@
val: &funcShell{
fclosure: fclosure{
args: []Value{
+ literal("(shell"),
literal(`make --version | ruby -n0e 'puts $_[/Make (\d)/,1]'`),
},
- expr: `$(shell make --version | ruby -n0e 'puts $$_[/Make (\d)/,1]')`,
},
},
},