aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/syntax/scanner.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2016-09-15 17:40:26 -0700
committerRobert Griesemer <gri@golang.org>2016-09-16 20:58:20 +0000
commit32db3f2756324616b7c856ac9501deccc2491239 (patch)
tree28a6afe4150d7cdcda6f06a8abde0ffeb18de267 /src/cmd/compile/internal/syntax/scanner.go
parent28ed2b0cd9ad6e2015f073931c05c08e8bf7b247 (diff)
downloadgo-32db3f2756324616b7c856ac9501deccc2491239.tar.gz
go-32db3f2756324616b7c856ac9501deccc2491239.zip
cmd/compile/internal/syntax: support for alias declarations
Permits parsing of alias declarations with -newparser const/type/var/func T => p.T but the compiler will reject it with an error. For now this also accepts type T = p.T so we can experiment with a type-alias only scenario. - renamed _Arrow token to _Larrow (<-) - introduced _Rarrow token (=>) - introduced AliasDecl node - extended scanner to accept _Rarrow - extended parser and printer to handle alias declarations Change-Id: I0170d10a87df8255db9186d466b6fd405228c38e Reviewed-on: https://go-review.googlesource.com/29355 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
Diffstat (limited to 'src/cmd/compile/internal/syntax/scanner.go')
-rw-r--r--src/cmd/compile/internal/syntax/scanner.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/syntax/scanner.go b/src/cmd/compile/internal/syntax/scanner.go
index b84fcc5fd1..bd38943c30 100644
--- a/src/cmd/compile/internal/syntax/scanner.go
+++ b/src/cmd/compile/internal/syntax/scanner.go
@@ -229,7 +229,7 @@ redo:
goto assignop
}
if c == '-' {
- s.tok = _Arrow
+ s.tok = _Larrow
break
}
s.ungetr()
@@ -253,11 +253,16 @@ redo:
s.tok = _Operator
case '=':
- if s.getr() == '=' {
+ c = s.getr()
+ if c == '=' {
s.op, s.prec = Eql, precCmp
s.tok = _Operator
break
}
+ if c == '>' {
+ s.tok = _Rarrow
+ break
+ }
s.ungetr()
s.tok = _Assign