Commits

Anonymous committed 3cbf22e Draft

delete unused arg to empty.
add commentary about findVar's invariant.

R=rsc
DELTA=6 (3 added, 0 deleted, 3 changed)
OCL=32583
CL=32594

  • Participants
  • Parent commits 64f6169

Comments (0)

Files changed (1)

src/pkg/template/template.go

 // If the data for this template is a struct, find the named variable.
 // Names of the form a.b.c are walked down the data tree.
 // The special name "@" (the "cursor") denotes the current data.
+// The value coming in (st.data) might need indirecting to reach
+// a struct while the return value is not indirected - that is,
+// it represents the actual named field.
 func (st *state) findVar(s string) reflect.Value {
 	if s == "@" {
 		return st.data
 }
 
 // Is there no data to look at?
-func empty(v reflect.Value, indirect_ok bool) bool {
+func empty(v reflect.Value) bool {
 	v = reflect.Indirect(v);
 	if v == nil {
 		return true
 	}
 	st = st.clone(field);
 	start, end := s.start, s.or;
-	if !empty(field, true) {
+	if !empty(field) {
 		// Execute the normal block.
 		if end < 0 {
 			end = s.end
 	if !ok {
 		t.execError(st, r.linenum, ".repeated: %s has bad type %s", r.field, field.Type());
 	}
-	if empty(field, true) {
+	if empty(field) {
 		// Execute the .or block, once.  If it's missing, do nothing.
 		start, end := r.or, r.end;
 		if start >= 0 {