github.com/franklinhu/terraform@v0.6.9-0.20151202232446-81f7fb1e6f9e/config/lang/ast/concat.go (about) 1 package ast 2 3 import ( 4 "bytes" 5 "fmt" 6 ) 7 8 // Concat represents a node where the result of two or more expressions are 9 // concatenated. The result of all expressions must be a string. 10 type Concat struct { 11 Exprs []Node 12 Posx Pos 13 } 14 15 func (n *Concat) Accept(v Visitor) Node { 16 for i, expr := range n.Exprs { 17 n.Exprs[i] = expr.Accept(v) 18 } 19 20 return v(n) 21 } 22 23 func (n *Concat) Pos() Pos { 24 return n.Posx 25 } 26 27 func (n *Concat) GoString() string { 28 return fmt.Sprintf("*%#v", *n) 29 } 30 31 func (n *Concat) String() string { 32 var b bytes.Buffer 33 for _, expr := range n.Exprs { 34 b.WriteString(fmt.Sprintf("%s", expr)) 35 } 36 37 return b.String() 38 } 39 40 func (n *Concat) Type(Scope) (Type, error) { 41 return TypeString, nil 42 }