aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/nodes.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2020-10-12 13:11:03 -0700
committerRobert Griesemer <gri@golang.org>2020-10-13 00:22:03 +0000
commit617b6339170a56a235625f8359730ba710d3ae96 (patch)
treee305a6eee8b80d9bd924dd006a51c689c2c75835 /src/cmd/compile/internal/syntax/nodes.go
parent986cad14e2ebf671b39623de438d13b0b5d99be6 (diff)
downloadgo-617b6339170a56a235625f8359730ba710d3ae96.tar.gz
go-617b6339170a56a235625f8359730ba710d3ae96.zip
[dev.typeparams] cmd/compile/internal/syntax: prepare syntax nodes for type parameters
- add TParamList fields to TypeDecl, FuncDecl - also: change File.Lines to File.EOF so we have the actual file end position Change-Id: Ia345f888080a884f7ac5cefd8bff3d80e4a59cdc Reviewed-on: https://go-review.googlesource.com/c/go/+/261657 Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/syntax/nodes.go')
-rw-r--r--src/cmd/compile/internal/syntax/nodes.go33
1 files changed, 18 insertions, 15 deletions
diff --git a/src/cmd/compile/internal/syntax/nodes.go b/src/cmd/compile/internal/syntax/nodes.go
index 815630fcd4..f2dbdcda29 100644
--- a/src/cmd/compile/internal/syntax/nodes.go
+++ b/src/cmd/compile/internal/syntax/nodes.go
@@ -37,7 +37,7 @@ type File struct {
Pragma Pragma
PkgName *Name
DeclList []Decl
- Lines uint
+ EOF Pos
node
}
@@ -74,11 +74,12 @@ type (
// Name Type
TypeDecl struct {
- Group *Group // nil means not part of a group
- Pragma Pragma
- Name *Name
- Alias bool
- Type Expr
+ Group *Group // nil means not part of a group
+ Pragma Pragma
+ Name *Name
+ TParamList []*Field // nil means no type parameters
+ Alias bool
+ Type Expr
decl
}
@@ -99,11 +100,12 @@ type (
// func Receiver Name Type { Body }
// func Receiver Name Type
FuncDecl struct {
- Pragma Pragma
- Recv *Field // nil means regular function
- Name *Name
- Type *FuncType
- Body *BlockStmt // nil means no body (forward declaration)
+ Pragma Pragma
+ Recv *Field // nil means regular function
+ Name *Name
+ TParamList []*Field // nil means no type parameters
+ Type *FuncType
+ Body *BlockStmt // nil means no body (forward declaration)
decl
}
)
@@ -223,9 +225,10 @@ type (
// Fun(ArgList[0], ArgList[1], ...)
CallExpr struct {
- Fun Expr
- ArgList []Expr // nil means no arguments
- HasDots bool // last argument is followed by ...
+ Fun Expr
+ ArgList []Expr // nil means no arguments
+ HasDots bool // last argument is followed by ...
+ Brackets bool // []'s instead of ()'s
expr
}
@@ -272,7 +275,7 @@ type (
// interface { MethodList[0]; MethodList[1]; ... }
InterfaceType struct {
- MethodList []*Field
+ MethodList []*Field // a field named "type" means a type constraint
expr
}