Commit 9f2f8ead authored by Rob Pike's avatar Rob Pike

add test of invariant in findVar

R=rsc
DELTA=23  (23 added, 0 deleted, 0 changed)
OCL=32592
CL=32595
parent 783986c6
...@@ -28,6 +28,7 @@ type S struct { ...@@ -28,6 +28,7 @@ type S struct {
integer int; integer int;
raw string; raw string;
innerT T; innerT T;
innerPointerT *T;
data []T; data []T;
pdata []*T; pdata []*T;
empty []*T; empty []*T;
...@@ -341,3 +342,25 @@ func TestCustomDelims(t *testing.T) { ...@@ -341,3 +342,25 @@ func TestCustomDelims(t *testing.T) {
} }
} }
} }
// Test that a variable evaluates to the field itself and does not further indirection
func TestVarIndirection(t *testing.T) {
s := new(S);
// initialized by hand for clarity.
s.innerPointerT = &t1;
var buf bytes.Buffer;
input := "{.section @}{innerPointerT}{.end}";
tmpl, err := Parse(input, nil);
if err != nil {
t.Fatal("unexpected parse error:", err);
}
err = tmpl.Execute(s, &buf);
if err != nil {
t.Fatal("unexpected execute error:", err)
}
expect := fmt.Sprintf("%v", &t1); // output should be hex address of t1
if string(buf.Data()) != expect {
t.Errorf("for %q: expected %q got %q", input, expect, string(buf.Data()));
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment