aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2016-10-03 13:24:56 -0700
committerRobert Griesemer <gri@golang.org>2016-10-04 22:44:42 +0000
commit776a90100f1f65fcf54dfd3d082d657341bdc323 (patch)
tree506dfb23c85d293a9c5259d4d47afbfa8662144a /src
parentc1e267cc734135a66af8a1a5015e572cbb598d44 (diff)
downloadgo-776a90100f1f65fcf54dfd3d082d657341bdc323.tar.xz
go/scanner, go/token: recognize => (ALIAS) token
For #16339. Change-Id: I0f83e46f13b5c8801aacf48fc8b690049edbbbff Reviewed-on: https://go-review.googlesource.com/30210 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/go/scanner/scanner.go2
-rw-r--r--src/go/scanner/scanner_test.go1
-rw-r--r--src/go/token/token.go8
3 files changed, 9 insertions, 2 deletions
diff --git a/src/go/scanner/scanner.go b/src/go/scanner/scanner.go
index ce660c71d5..bf63e814aa 100644
--- a/src/go/scanner/scanner.go
+++ b/src/go/scanner/scanner.go
@@ -731,7 +731,7 @@ scanAgain:
case '>':
tok = s.switch4(token.GTR, token.GEQ, '>', token.SHR, token.SHR_ASSIGN)
case '=':
- tok = s.switch2(token.ASSIGN, token.EQL)
+ tok = s.switch3(token.ASSIGN, token.EQL, '>', token.ALIAS)
case '!':
tok = s.switch2(token.NOT, token.NEQ)
case '&':
diff --git a/src/go/scanner/scanner_test.go b/src/go/scanner/scanner_test.go
index 0d21905166..d1f2158898 100644
--- a/src/go/scanner/scanner_test.go
+++ b/src/go/scanner/scanner_test.go
@@ -121,6 +121,7 @@ var tokens = [...]elt{
{token.LAND, "&&", operator},
{token.LOR, "||", operator},
{token.ARROW, "<-", operator},
+ {token.ALIAS, "=>", operator},
{token.INC, "++", operator},
{token.DEC, "--", operator},
diff --git a/src/go/token/token.go b/src/go/token/token.go
index 865f63f4a1..7ad4290fb9 100644
--- a/src/go/token/token.go
+++ b/src/go/token/token.go
@@ -121,6 +121,10 @@ const (
TYPE
VAR
keyword_end
+
+ // Alias support - must add at end to pass Go 1 compatibility test
+
+ ALIAS // =>
)
var tokens = [...]string{
@@ -221,6 +225,8 @@ var tokens = [...]string{
SWITCH: "switch",
TYPE: "type",
VAR: "var",
+
+ ALIAS: "=>",
}
// String returns the string corresponding to the token tok.
@@ -300,7 +306,7 @@ func (tok Token) IsLiteral() bool { return literal_beg < tok && tok < literal_en
// IsOperator returns true for tokens corresponding to operators and
// delimiters; it returns false otherwise.
//
-func (tok Token) IsOperator() bool { return operator_beg < tok && tok < operator_end }
+func (tok Token) IsOperator() bool { return operator_beg < tok && tok < operator_end || tok == ALIAS }
// IsKeyword returns true for tokens corresponding to keywords;
// it returns false otherwise.