OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 package com.google.dart.compiler.resolver; | 5 package com.google.dart.compiler.resolver; |
6 | 6 |
7 import com.google.common.base.Joiner; | 7 import com.google.common.base.Joiner; |
8 import com.google.common.base.Splitter; | 8 import com.google.common.base.Splitter; |
9 import com.google.common.collect.Lists; | 9 import com.google.common.collect.Lists; |
10 import com.google.dart.compiler.DartCompilationError; | 10 import com.google.dart.compiler.DartCompilationError; |
11 import com.google.dart.compiler.DartCompilerErrorCode; | |
12 import com.google.dart.compiler.DartCompilerListener; | 11 import com.google.dart.compiler.DartCompilerListener; |
13 import com.google.dart.compiler.ErrorCode; | 12 import com.google.dart.compiler.ErrorCode; |
14 import com.google.dart.compiler.ast.DartClass; | 13 import com.google.dart.compiler.ast.DartClass; |
15 import com.google.dart.compiler.ast.DartIdentifier; | 14 import com.google.dart.compiler.ast.DartIdentifier; |
16 import com.google.dart.compiler.ast.DartNode; | 15 import com.google.dart.compiler.ast.DartNode; |
17 import com.google.dart.compiler.ast.DartTypeNode; | 16 import com.google.dart.compiler.ast.DartTypeNode; |
18 import com.google.dart.compiler.ast.DartTypeParameter; | 17 import com.google.dart.compiler.ast.DartTypeParameter; |
19 import com.google.dart.compiler.ast.DartUnit; | 18 import com.google.dart.compiler.ast.DartUnit; |
20 import com.google.dart.compiler.parser.DartParser; | 19 import com.google.dart.compiler.parser.DartParser; |
21 import com.google.dart.compiler.parser.DartScannerParserContext; | 20 import com.google.dart.compiler.parser.DartScannerParserContext; |
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 return getParser(string).parseUnit(source); | 275 return getParser(string).parseUnit(source); |
277 } | 276 } |
278 | 277 |
279 private DartParser getParser(String string) { | 278 private DartParser getParser(String string) { |
280 return new DartParser(new DartScannerParserContext(null, string, getListener
())); | 279 return new DartParser(new DartScannerParserContext(null, string, getListener
())); |
281 } | 280 } |
282 | 281 |
283 private DartCompilerListener getListener() { | 282 private DartCompilerListener getListener() { |
284 return new DartCompilerListener() { | 283 return new DartCompilerListener() { |
285 @Override | 284 @Override |
286 public void compilationError(DartCompilationError event) { | 285 public void onError(DartCompilationError event) { |
287 encounteredErrors.add(event); | 286 encounteredErrors.add(event); |
288 } | 287 } |
289 | 288 |
290 @Override | 289 @Override |
291 public void compilationWarning(DartCompilationError event) { | |
292 compilationError(event); | |
293 } | |
294 | |
295 @Override | |
296 public void typeError(DartCompilationError event) { | |
297 compilationError(event); | |
298 } | |
299 | |
300 @Override | |
301 public void unitCompiled(DartUnit unit) { | 290 public void unitCompiled(DartUnit unit) { |
302 } | 291 } |
303 }; | 292 }; |
304 } | 293 } |
305 | 294 |
306 protected void checkExpectedErrors(ErrorCode[] errorCodes) { | 295 protected void checkExpectedErrors(ErrorCode[] errorCodes) { |
307 checkExpectedErrors(encounteredErrors, errorCodes, null); | 296 checkExpectedErrors(encounteredErrors, errorCodes, null); |
308 } | 297 } |
309 | 298 |
310 /** | 299 /** |
(...skipping 24 matching lines...) Expand all Loading... |
335 } | 324 } |
336 | 325 |
337 /** | 326 /** |
338 * Returns a context with a listener that remembers all DartCompilationErrors
and records | 327 * Returns a context with a listener that remembers all DartCompilationErrors
and records |
339 * them. | 328 * them. |
340 * @return | 329 * @return |
341 */ | 330 */ |
342 protected TestCompilerContext getContext() { | 331 protected TestCompilerContext getContext() { |
343 return new TestCompilerContext() { | 332 return new TestCompilerContext() { |
344 @Override | 333 @Override |
345 public void compilationError(DartCompilationError event) { | 334 public void onError(DartCompilationError event) { |
346 recordError(event); | 335 recordError(event); |
347 } | 336 } |
348 }; | 337 }; |
349 } | 338 } |
350 | 339 |
351 /** | 340 /** |
352 * Resets the global list of encountered errors. Call this before evaluating
a new test. | 341 * Resets the global list of encountered errors. Call this before evaluating
a new test. |
353 */ | 342 */ |
354 protected void resetExpectedErrors() { | 343 protected void resetExpectedErrors() { |
355 encounteredErrors = Lists.newArrayList(); | 344 encounteredErrors = Lists.newArrayList(); |
(...skipping 13 matching lines...) Expand all Loading... |
369 for (String line : Splitter.on("\n").split(source)) { | 358 for (String line : Splitter.on("\n").split(source)) { |
370 System.out.println(String.format(" %02d: %s", count++, line)); | 359 System.out.println(String.format(" %02d: %s", count++, line)); |
371 } | 360 } |
372 } | 361 } |
373 } | 362 } |
374 /** | 363 /** |
375 * For debugging. | 364 * For debugging. |
376 */ | 365 */ |
377 protected void printEncountered(List<DartCompilationError> encountered) { | 366 protected void printEncountered(List<DartCompilationError> encountered) { |
378 for (DartCompilationError error : encountered) { | 367 for (DartCompilationError error : encountered) { |
379 DartCompilerErrorCode errorCode = (DartCompilerErrorCode) error | 368 ErrorCode errorCode = (ErrorCode) error.getErrorCode(); |
380 .getErrorCode(); | 369 String msg = |
381 String msg = String.format("%s > %s (%d:%d)", errorCode.name(), error | 370 String.format( |
382 .getMessage(), error.getLineNumber(), error.getColumnNumber()); | 371 "%s > %s (%d:%d)", |
| 372 errorCode.toString(), |
| 373 error.getMessage(), |
| 374 error.getLineNumber(), |
| 375 error.getColumnNumber()); |
383 System.out.println(msg); | 376 System.out.println(msg); |
384 } | 377 } |
385 } | 378 } |
386 | 379 |
387 /** | 380 /** |
388 * Convenience method to parse and resolve a code snippet, then test for error
codes. | 381 * Convenience method to parse and resolve a code snippet, then test for error
codes. |
389 */ | 382 */ |
390 protected void resolveAndTest(String source, ErrorCode... errorCodes) { | 383 protected void resolveAndTest(String source, ErrorCode... errorCodes) { |
391 resetExpectedErrors(); | 384 resetExpectedErrors(); |
392 final List<DartCompilationError> encountered = Lists.newArrayList(); | 385 final List<DartCompilationError> encountered = Lists.newArrayList(); |
393 TestCompilerContext ctx = new TestCompilerContext() { | 386 TestCompilerContext ctx = new TestCompilerContext() { |
394 @Override | 387 @Override |
395 public void compilationError(DartCompilationError event) { | 388 public void onError(DartCompilationError event) { |
396 encountered.add(event); | 389 encountered.add(event); |
397 } | 390 } |
398 }; | 391 }; |
399 DartUnit unit = parseUnit(source); | 392 DartUnit unit = parseUnit(source); |
400 if (encounteredErrors.size() != 0) { | 393 if (encounteredErrors.size() != 0) { |
401 printSource(source); | 394 printSource(source); |
402 printEncountered(encounteredErrors); | 395 printEncountered(encounteredErrors); |
403 assertEquals("Expected no errors in parse step:", 0, encounteredErrors.siz
e()); | 396 assertEquals("Expected no errors in parse step:", 0, encounteredErrors.siz
e()); |
404 } | 397 } |
405 resolve(unit, ctx); | 398 resolve(unit, ctx); |
406 checkExpectedErrors(encountered, errorCodes, source); | 399 checkExpectedErrors(encountered, errorCodes, source); |
407 } | 400 } |
408 } | 401 } |
OLD | NEW |