diff --git a/arm.go b/arm.go index 2ae4971..8363fc9 100644 --- a/arm.go +++ b/arm.go @@ -100,7 +100,10 @@ func (t *template) compileArm(name string, targets map[*nameBinding]nameTarget) } b := t.nameScope.lookup(a.head) if grammar.HasSelector(a.tail) { - return a, fmt.Errorf("a path through name %q may not select a row; read it directly, {%s}, or bind the row to a name of its own", a.head, grammar.JoinSegments(append([]string{b.ref}, a.tail...))) + if !grammar.IsRef(b.ref) { + return a, fmt.Errorf("a path through name %q may not select a row; bind the row to a name of its own", a.head) + } + return a, fmt.Errorf("a path through name %q may not select a row; read the row without the name, {%s}, or bind it to a name of its own", a.head, grammar.JoinSegments(append([]string{b.ref}, a.tail...))) } target := targets[b] full := append(target.tail[:len(target.tail):len(target.tail)], a.tail...)