Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: pkg/front_end/test/scanner_roundtrip_test.dart

Issue 2757113002: fasta.Token implement analyzer.Token (Closed)
Patch Set: rebase Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:analyzer/src/fasta/token_utils.dart'; 5 import 'package:analyzer/src/fasta/token_utils.dart';
6 import 'package:front_end/src/fasta/scanner/precedence.dart'; 6 import 'package:front_end/src/scanner/errors.dart' as analyzer;
7 import 'package:front_end/src/scanner/reader.dart' as analyzer;
8 import 'package:front_end/src/scanner/scanner.dart' as analyzer;
7 import 'package:front_end/src/scanner/token.dart'; 9 import 'package:front_end/src/scanner/token.dart';
8 import 'package:front_end/src/fasta/scanner/string_scanner.dart';
9 import 'package:test/test.dart'; 10 import 'package:test/test.dart';
10 import 'package:test_reflective_loader/test_reflective_loader.dart'; 11 import 'package:test_reflective_loader/test_reflective_loader.dart';
11 12
12 import 'scanner_fasta_test.dart'; 13 import 'scanner_fasta_test.dart';
13 import 'scanner_test.dart'; 14 import 'scanner_test.dart';
14 15
15 main() { 16 main() {
16 defineReflectiveSuite(() { 17 defineReflectiveSuite(() {
17 defineReflectiveTests(ScannerTest_RoundTrip); 18 defineReflectiveTests(ScannerTest_RoundTrip);
18 }); 19 });
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 Keyword.PART, 113 Keyword.PART,
113 Keyword.SET, 114 Keyword.SET,
114 Keyword.STATIC, 115 Keyword.STATIC,
115 Keyword.TYPEDEF, 116 Keyword.TYPEDEF,
116 ]); 117 ]);
117 for (Keyword keyword in Keyword.values) { 118 for (Keyword keyword in Keyword.values) {
118 expect(keyword.isPseudoKeyword, pseudoAnalyzerKeywords.contains(keyword), 119 expect(keyword.isPseudoKeyword, pseudoAnalyzerKeywords.contains(keyword),
119 reason: keyword.name); 120 reason: keyword.name);
120 } 121 }
121 } 122 }
123 }
122 124
123 var allTokenTypes = new Set<TokenType>.from([ 125 class TestScanner extends analyzer.Scanner {
124 TokenType.EOF, 126 TestScanner(analyzer.CharacterReader reader) : super(reader);
125 TokenType.DOUBLE,
126 TokenType.HEXADECIMAL,
127 TokenType.IDENTIFIER,
128 TokenType.INT,
129 TokenType.KEYWORD,
130 TokenType.MULTI_LINE_COMMENT,
131 TokenType.SCRIPT_TAG,
132 TokenType.SINGLE_LINE_COMMENT,
133 TokenType.STRING,
134 TokenType.AMPERSAND,
135 TokenType.AMPERSAND_AMPERSAND,
136 TokenType.AMPERSAND_AMPERSAND_EQ,
137 TokenType.AMPERSAND_EQ,
138 TokenType.AT,
139 TokenType.BANG,
140 TokenType.BANG_EQ,
141 TokenType.BAR,
142 TokenType.BAR_BAR,
143 TokenType.BAR_BAR_EQ,
144 TokenType.BAR_EQ,
145 TokenType.COLON,
146 TokenType.COMMA,
147 TokenType.CARET,
148 TokenType.CARET_EQ,
149 TokenType.CLOSE_CURLY_BRACKET,
150 TokenType.CLOSE_PAREN,
151 TokenType.CLOSE_SQUARE_BRACKET,
152 TokenType.EQ,
153 TokenType.EQ_EQ,
154 TokenType.FUNCTION,
155 TokenType.GT,
156 TokenType.GT_EQ,
157 TokenType.GT_GT,
158 TokenType.GT_GT_EQ,
159 TokenType.HASH,
160 TokenType.INDEX,
161 TokenType.INDEX_EQ,
162 TokenType.LT,
163 TokenType.LT_EQ,
164 TokenType.LT_LT,
165 TokenType.LT_LT_EQ,
166 TokenType.MINUS,
167 TokenType.MINUS_EQ,
168 TokenType.MINUS_MINUS,
169 TokenType.OPEN_CURLY_BRACKET,
170 TokenType.OPEN_PAREN,
171 TokenType.OPEN_SQUARE_BRACKET,
172 TokenType.PERCENT,
173 TokenType.PERCENT_EQ,
174 TokenType.PERIOD,
175 TokenType.PERIOD_PERIOD,
176 TokenType.PLUS,
177 TokenType.PLUS_EQ,
178 TokenType.PLUS_PLUS,
179 TokenType.QUESTION,
180 TokenType.QUESTION_PERIOD,
181 TokenType.QUESTION_QUESTION,
182 TokenType.QUESTION_QUESTION_EQ,
183 TokenType.SEMICOLON,
184 TokenType.SLASH,
185 TokenType.SLASH_EQ,
186 TokenType.STAR,
187 TokenType.STAR_EQ,
188 TokenType.STRING_INTERPOLATION_EXPRESSION,
189 TokenType.STRING_INTERPOLATION_IDENTIFIER,
190 TokenType.TILDE,
191 TokenType.TILDE_SLASH,
192 TokenType.TILDE_SLASH_EQ,
193 TokenType.BACKPING,
194 TokenType.BACKSLASH,
195 TokenType.PERIOD_PERIOD_PERIOD,
196 TokenType.GENERIC_METHOD_TYPE_LIST,
197 TokenType.GENERIC_METHOD_TYPE_ASSIGN,
198 ]);
199 127
200 void test_isOperator() { 128 @override
201 var operatorTokenTypes = new Set<TokenType>.from([ 129 void reportError(
202 TokenType.AMPERSAND, 130 analyzer.ScannerErrorCode errorCode, int offset, List<Object> arguments) {
203 TokenType.AMPERSAND_AMPERSAND, 131 fail('Unexpected error $errorCode while scanning offset $offset\n'
204 TokenType.AMPERSAND_AMPERSAND_EQ, 132 ' arguments: $arguments');
205 TokenType.AMPERSAND_EQ,
206 TokenType.BANG,
207 TokenType.BANG_EQ,
208 TokenType.BAR,
209 TokenType.BAR_BAR,
210 TokenType.BAR_BAR_EQ,
211 TokenType.BAR_EQ,
212 TokenType.CARET,
213 TokenType.CARET_EQ,
214 TokenType.EQ,
215 TokenType.EQ_EQ,
216 TokenType.GT,
217 TokenType.GT_EQ,
218 TokenType.GT_GT,
219 TokenType.GT_GT_EQ,
220 TokenType.INDEX,
221 TokenType.INDEX_EQ,
222 TokenType.LT,
223 TokenType.LT_EQ,
224 TokenType.LT_LT,
225 TokenType.LT_LT_EQ,
226 TokenType.MINUS,
227 TokenType.MINUS_EQ,
228 TokenType.MINUS_MINUS,
229 TokenType.PERCENT,
230 TokenType.PERCENT_EQ,
231 TokenType.PERIOD_PERIOD,
232 TokenType.PLUS,
233 TokenType.PLUS_EQ,
234 TokenType.PLUS_PLUS,
235 TokenType.QUESTION,
236 TokenType.QUESTION_PERIOD,
237 TokenType.QUESTION_QUESTION,
238 TokenType.QUESTION_QUESTION_EQ,
239 TokenType.SLASH,
240 TokenType.SLASH_EQ,
241 TokenType.STAR,
242 TokenType.STAR_EQ,
243 TokenType.TILDE,
244 TokenType.TILDE_SLASH,
245 TokenType.TILDE_SLASH_EQ,
246 ]);
247
248 void assertIsOperator(String source, bool isOperator) {
249 if (source == null || source.isEmpty) return;
250 var scanner = new StringScanner(source, includeComments: true);
251 var token = scanner.tokenize();
252 expect(token.isOperator, isOperator, reason: source);
253 }
254
255 var operatorLexemes =
256 new Set.from(operatorTokenTypes.map((tt) => tt.lexeme));
257
258 for (PrecedenceInfo info in PrecedenceInfo.all) {
259 assertIsOperator(info.value, operatorLexemes.contains(info.value));
260 }
261
262 for (TokenType tt in new List.from(allTokenTypes)) {
263 assertIsOperator(tt.lexeme, operatorTokenTypes.contains(tt));
264 }
265 }
266
267 void test_precedence() {
268 for (TokenType tt in allTokenTypes) {
269 for (PrecedenceInfo info in PrecedenceInfo.all) {
270 if (info.value == tt.lexeme || info.value == tt.name.toLowerCase()) {
271 expect(tt.precedence, info.precedence, reason: tt.name);
272 }
273 }
274 }
275 } 133 }
276 } 134 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698