aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ast/ast.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ast/ast.go')
-rw-r--r--pkg/ast/ast.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/ast/ast.go b/pkg/ast/ast.go
index 4c9101f79..9e87a1b81 100644
--- a/pkg/ast/ast.go
+++ b/pkg/ast/ast.go
@@ -20,6 +20,10 @@ type Description struct {
// Node is AST node interface.
type Node interface {
Info() (pos Pos, typ string, name string)
+ // Clone makes a deep copy of the node.
+ // If newPos is not zero, sets Pos of all nodes to newPos.
+ // If newPos is zero, Pos of nodes is left intact.
+ Clone(newPos Pos) Node
}
// Top-level AST nodes:
@@ -130,6 +134,16 @@ func (n *StrFlags) Info() (Pos, string, string) {
return n.Pos, "string flags", n.Name.Name
}
+type TypeDef struct {
+ Pos Pos
+ Name *Ident
+ Type *Type
+}
+
+func (n *TypeDef) Info() (Pos, string, string) {
+ return n.Pos, "type", n.Name.Name
+}
+
// Not top-level AST nodes:
type Ident struct {