// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:analyzer/dart/ast/token.dart'; import 'package:analyzer/src/summary2/unlinked_token_type.dart'; /// The context for reading tokens. class TokensContext { static TokenType binaryToAstTokenType(UnlinkedTokenType type) { switch (type) { case UnlinkedTokenType.ABSTRACT: return Keyword.ABSTRACT; case UnlinkedTokenType.AMPERSAND: return TokenType.AMPERSAND; case UnlinkedTokenType.AMPERSAND_AMPERSAND: return TokenType.AMPERSAND_AMPERSAND; case UnlinkedTokenType.AMPERSAND_EQ: return TokenType.AMPERSAND_EQ; case UnlinkedTokenType.AS: return TokenType.AS; case UnlinkedTokenType.ASSERT: return Keyword.ASSERT; case UnlinkedTokenType.ASYNC: return Keyword.ASYNC; case UnlinkedTokenType.AT: return TokenType.AT; case UnlinkedTokenType.AWAIT: return Keyword.AWAIT; case UnlinkedTokenType.BACKPING: return TokenType.BACKPING; case UnlinkedTokenType.BACKSLASH: return TokenType.BACKSLASH; case UnlinkedTokenType.BANG: return TokenType.BANG; case UnlinkedTokenType.BANG_EQ: return TokenType.BANG_EQ; case UnlinkedTokenType.BANG_EQ_EQ: return TokenType.BANG_EQ_EQ; case UnlinkedTokenType.BAR: return TokenType.BAR; case UnlinkedTokenType.BAR_BAR: return TokenType.BAR_BAR; case UnlinkedTokenType.BAR_EQ: return TokenType.BAR_EQ; case UnlinkedTokenType.BREAK: return Keyword.BREAK; case UnlinkedTokenType.CARET: return TokenType.CARET; case UnlinkedTokenType.CARET_EQ: return TokenType.CARET_EQ; case UnlinkedTokenType.CASE: return Keyword.CASE; case UnlinkedTokenType.CATCH: return Keyword.CATCH; case UnlinkedTokenType.CLASS: return Keyword.CLASS; case UnlinkedTokenType.CLOSE_CURLY_BRACKET: return TokenType.CLOSE_CURLY_BRACKET; case UnlinkedTokenType.CLOSE_PAREN: return TokenType.CLOSE_PAREN; case UnlinkedTokenType.CLOSE_SQUARE_BRACKET: return TokenType.CLOSE_SQUARE_BRACKET; case UnlinkedTokenType.COLON: return TokenType.COLON; case UnlinkedTokenType.COMMA: return TokenType.COMMA; case UnlinkedTokenType.CONST: return Keyword.CONST; case UnlinkedTokenType.CONTINUE: return Keyword.CONTINUE; case UnlinkedTokenType.COVARIANT: return Keyword.COVARIANT; case UnlinkedTokenType.DEFAULT: return Keyword.DEFAULT; case UnlinkedTokenType.DEFERRED: return Keyword.DEFERRED; case UnlinkedTokenType.DO: return Keyword.DO; case UnlinkedTokenType.DOUBLE: return TokenType.DOUBLE; // TODO(srawlins): TokenType.DOUBLE_WITH_SEPARATORS? case UnlinkedTokenType.DYNAMIC: return Keyword.DYNAMIC; case UnlinkedTokenType.ELSE: return Keyword.ELSE; case UnlinkedTokenType.ENUM: return Keyword.ENUM; case UnlinkedTokenType.EOF: return TokenType.EOF; case UnlinkedTokenType.EQ: return TokenType.EQ; case UnlinkedTokenType.EQ_EQ: return TokenType.EQ_EQ; case UnlinkedTokenType.EQ_EQ_EQ: return TokenType.EQ_EQ_EQ; case UnlinkedTokenType.EXPORT: return Keyword.EXPORT; case UnlinkedTokenType.EXTENDS: return Keyword.EXTENDS; case UnlinkedTokenType.EXTERNAL: return Keyword.EXTERNAL; case UnlinkedTokenType.FACTORY: return Keyword.FACTORY; case UnlinkedTokenType.FALSE: return Keyword.FALSE; case UnlinkedTokenType.FINAL: return Keyword.FINAL; case UnlinkedTokenType.FINALLY: return Keyword.FINALLY; case UnlinkedTokenType.FOR: return Keyword.FOR; case UnlinkedTokenType.FUNCTION: return TokenType.FUNCTION; case UnlinkedTokenType.FUNCTION_KEYWORD: return Keyword.FUNCTION; case UnlinkedTokenType.GET: return Keyword.GET; case UnlinkedTokenType.GT: return TokenType.GT; case UnlinkedTokenType.GT_EQ: return TokenType.GT_EQ; case UnlinkedTokenType.GT_GT: return TokenType.GT_GT; case UnlinkedTokenType.GT_GT_EQ: return TokenType.GT_GT_EQ; case UnlinkedTokenType.GT_GT_GT: return TokenType.GT_GT_GT; case UnlinkedTokenType.GT_GT_GT_EQ: return TokenType.GT_GT_GT_EQ; case UnlinkedTokenType.HASH: return TokenType.HASH; case UnlinkedTokenType.HEXADECIMAL: return TokenType.HEXADECIMAL; // TODO(srawlins): TokenType.HEXADECIMAL_WITH_SEPARATORS? case UnlinkedTokenType.HIDE: return Keyword.HIDE; case UnlinkedTokenType.IDENTIFIER: return TokenType.IDENTIFIER; case UnlinkedTokenType.IF: return Keyword.IF; case UnlinkedTokenType.IMPLEMENTS: return Keyword.IMPLEMENTS; case UnlinkedTokenType.IMPORT: return Keyword.IMPORT; case UnlinkedTokenType.IN: return Keyword.IN; case UnlinkedTokenType.INDEX: return TokenType.INDEX; case UnlinkedTokenType.INDEX_EQ: return TokenType.INDEX_EQ; case UnlinkedTokenType.INOUT: return Keyword.INOUT; case UnlinkedTokenType.INT: return TokenType.INT; // TODO(srawlins): TokenType.INT_WITH_SEPARATORS? case UnlinkedTokenType.INTERFACE: return Keyword.INTERFACE; case UnlinkedTokenType.IS: return TokenType.IS; case UnlinkedTokenType.LATE: return Keyword.LATE; case UnlinkedTokenType.LIBRARY: return Keyword.LIBRARY; case UnlinkedTokenType.LT: return TokenType.LT; case UnlinkedTokenType.LT_EQ: return TokenType.LT_EQ; case UnlinkedTokenType.LT_LT: return TokenType.LT_LT; case UnlinkedTokenType.LT_LT_EQ: return TokenType.LT_LT_EQ; case UnlinkedTokenType.MINUS: return TokenType.MINUS; case UnlinkedTokenType.MINUS_EQ: return TokenType.MINUS_EQ; case UnlinkedTokenType.MINUS_MINUS: return TokenType.MINUS_MINUS; case UnlinkedTokenType.MIXIN: return Keyword.MIXIN; case UnlinkedTokenType.MULTI_LINE_COMMENT: return TokenType.MULTI_LINE_COMMENT; case UnlinkedTokenType.NATIVE: return Keyword.NATIVE; case UnlinkedTokenType.NEW: return Keyword.NEW; case UnlinkedTokenType.NULL: return Keyword.NULL; case UnlinkedTokenType.OF: return Keyword.OF; case UnlinkedTokenType.ON: return Keyword.ON; case UnlinkedTokenType.OPEN_CURLY_BRACKET: return TokenType.OPEN_CURLY_BRACKET; case UnlinkedTokenType.OPEN_PAREN: return TokenType.OPEN_PAREN; case UnlinkedTokenType.OPEN_SQUARE_BRACKET: return TokenType.OPEN_SQUARE_BRACKET; case UnlinkedTokenType.OPERATOR: return Keyword.OPERATOR; case UnlinkedTokenType.OUT: return Keyword.OUT; case UnlinkedTokenType.PART: return Keyword.PART; case UnlinkedTokenType.PATCH: return Keyword.PATCH; case UnlinkedTokenType.PERCENT: return TokenType.PERCENT; case UnlinkedTokenType.PERCENT_EQ: return TokenType.PERCENT_EQ; case UnlinkedTokenType.PERIOD: return TokenType.PERIOD; case UnlinkedTokenType.PERIOD_PERIOD: return TokenType.PERIOD_PERIOD; case UnlinkedTokenType.PERIOD_PERIOD_PERIOD: return TokenType.PERIOD_PERIOD_PERIOD; case UnlinkedTokenType.PERIOD_PERIOD_PERIOD_QUESTION: return TokenType.PERIOD_PERIOD_PERIOD_QUESTION; case UnlinkedTokenType.PLUS: return TokenType.PLUS; case UnlinkedTokenType.PLUS_EQ: return TokenType.PLUS_EQ; case UnlinkedTokenType.PLUS_PLUS: return TokenType.PLUS_PLUS; case UnlinkedTokenType.QUESTION: return TokenType.QUESTION; case UnlinkedTokenType.QUESTION_PERIOD: return TokenType.QUESTION_PERIOD; case UnlinkedTokenType.QUESTION_QUESTION: return TokenType.QUESTION_QUESTION; case UnlinkedTokenType.QUESTION_QUESTION_EQ: return TokenType.QUESTION_QUESTION_EQ; case UnlinkedTokenType.REQUIRED: return Keyword.REQUIRED; case UnlinkedTokenType.RETHROW: return Keyword.RETHROW; case UnlinkedTokenType.RETURN: return Keyword.RETURN; case UnlinkedTokenType.SCRIPT_TAG: return TokenType.SCRIPT_TAG; case UnlinkedTokenType.SEMICOLON: return TokenType.SEMICOLON; case UnlinkedTokenType.SET: return Keyword.SET; case UnlinkedTokenType.SHOW: return Keyword.SHOW; case UnlinkedTokenType.SINGLE_LINE_COMMENT: return TokenType.SINGLE_LINE_COMMENT; case UnlinkedTokenType.SLASH: return TokenType.SLASH; case UnlinkedTokenType.SLASH_EQ: return TokenType.SLASH_EQ; case UnlinkedTokenType.SOURCE: return Keyword.SOURCE; case UnlinkedTokenType.STAR: return TokenType.STAR; case UnlinkedTokenType.STAR_EQ: return TokenType.STAR_EQ; case UnlinkedTokenType.STATIC: return Keyword.STATIC; case UnlinkedTokenType.STRING: return TokenType.STRING; case UnlinkedTokenType.STRING_INTERPOLATION_EXPRESSION: return TokenType.STRING_INTERPOLATION_EXPRESSION; case UnlinkedTokenType.STRING_INTERPOLATION_IDENTIFIER: return TokenType.STRING_INTERPOLATION_IDENTIFIER; case UnlinkedTokenType.SUPER: return Keyword.SUPER; case UnlinkedTokenType.SWITCH: return Keyword.SWITCH; case UnlinkedTokenType.SYNC: return Keyword.SYNC; case UnlinkedTokenType.THIS: return Keyword.THIS; case UnlinkedTokenType.THROW: return Keyword.THROW; case UnlinkedTokenType.TILDE: return TokenType.TILDE; case UnlinkedTokenType.TILDE_SLASH: return TokenType.TILDE_SLASH; case UnlinkedTokenType.TILDE_SLASH_EQ: return TokenType.TILDE_SLASH_EQ; case UnlinkedTokenType.TRUE: return Keyword.TRUE; case UnlinkedTokenType.TRY: return Keyword.TRY; case UnlinkedTokenType.TYPEDEF: return Keyword.TYPEDEF; case UnlinkedTokenType.VAR: return Keyword.VAR; case UnlinkedTokenType.VOID: return Keyword.VOID; case UnlinkedTokenType.WHILE: return Keyword.WHILE; case UnlinkedTokenType.WITH: return Keyword.WITH; case UnlinkedTokenType.YIELD: return Keyword.YIELD; default: throw StateError('Unexpected type: $type'); } } }