From 776a90100f1f65fcf54dfd3d082d657341bdc323 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Mon, 3 Oct 2016 13:24:56 -0700 Subject: [PATCH] go/scanner, go/token: recognize => (ALIAS) token For #16339. Change-Id: I0f83e46f13b5c8801aacf48fc8b690049edbbbff Reviewed-on: https://go-review.googlesource.com/30210 Reviewed-by: Matthew Dempsky --- src/go/scanner/scanner.go | 2 +- src/go/scanner/scanner_test.go | 1 + src/go/token/token.go | 8 +++++++- 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. -- 2.48.1