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 import '../../../sdk/lib/_internal/compiler/implementation/dart2jslib.dart' | 5 import '../../../sdk/lib/_internal/compiler/implementation/dart2jslib.dart' |
6 hide SourceString; | 6 hide SourceString; |
7 import '../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar
t'; | 7 import '../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar
t'; |
8 import '../../../sdk/lib/_internal/compiler/implementation/tree/tree.dart'; | 8 import '../../../sdk/lib/_internal/compiler/implementation/tree/tree.dart'; |
9 import '../../../sdk/lib/_internal/compiler/implementation/util/util.dart'; | 9 import '../../../sdk/lib/_internal/compiler/implementation/util/util.dart'; |
10 import 'mock_compiler.dart'; | 10 import 'mock_compiler.dart'; |
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 } | 409 } |
410 | 410 |
411 DartType analyzeType(String text) { | 411 DartType analyzeType(String text) { |
412 var node = parseExpression(text); | 412 var node = parseExpression(text); |
413 TypeCheckerVisitor visitor = | 413 TypeCheckerVisitor visitor = |
414 new TypeCheckerVisitor(compiler, new TreeElementMapping(null), types); | 414 new TypeCheckerVisitor(compiler, new TreeElementMapping(null), types); |
415 return visitor.analyze(node); | 415 return visitor.analyze(node); |
416 } | 416 } |
417 | 417 |
418 analyzeTopLevel(String text, [expectedWarnings]) { | 418 analyzeTopLevel(String text, [expectedWarnings]) { |
419 if (expectedWarnings === null) expectedWarnings = []; | 419 if (expectedWarnings == null) expectedWarnings = []; |
420 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; | 420 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; |
421 | 421 |
422 LibraryElement library = mockLibrary(compiler, text); | 422 LibraryElement library = mockLibrary(compiler, text); |
423 | 423 |
424 Link<Element> topLevelElements = parseUnit(text, compiler, library); | 424 Link<Element> topLevelElements = parseUnit(text, compiler, library); |
425 | 425 |
426 for (Link<Element> elements = topLevelElements; | 426 for (Link<Element> elements = topLevelElements; |
427 !elements.isEmpty; | 427 !elements.isEmpty; |
428 elements = elements.tail) { | 428 elements = elements.tail) { |
429 Node node = elements.head.parseNode(compiler); | 429 Node node = elements.head.parseNode(compiler); |
430 TreeElements mapping = compiler.resolver.resolve(elements.head); | 430 TreeElements mapping = compiler.resolver.resolve(elements.head); |
431 TypeCheckerVisitor checker = | 431 TypeCheckerVisitor checker = |
432 new TypeCheckerVisitor(compiler, mapping, types); | 432 new TypeCheckerVisitor(compiler, mapping, types); |
433 compiler.clearWarnings(); | 433 compiler.clearWarnings(); |
434 checker.analyze(node); | 434 checker.analyze(node); |
435 compareWarningKinds(text, expectedWarnings, compiler.warnings); | 435 compareWarningKinds(text, expectedWarnings, compiler.warnings); |
436 } | 436 } |
437 } | 437 } |
438 | 438 |
439 analyze(String text, [expectedWarnings]) { | 439 analyze(String text, [expectedWarnings]) { |
440 if (expectedWarnings === null) expectedWarnings = []; | 440 if (expectedWarnings == null) expectedWarnings = []; |
441 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; | 441 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; |
442 | 442 |
443 Token tokens = scan(text); | 443 Token tokens = scan(text); |
444 NodeListener listener = new NodeListener(compiler, null); | 444 NodeListener listener = new NodeListener(compiler, null); |
445 Parser parser = new Parser(listener); | 445 Parser parser = new Parser(listener); |
446 parser.parseStatement(tokens); | 446 parser.parseStatement(tokens); |
447 Node node = listener.popNode(); | 447 Node node = listener.popNode(); |
448 Element function = new Element( | 448 Element function = new Element( |
449 buildSourceString(''), ElementKind.FUNCTION, compiler.mainApp); | 449 buildSourceString(''), ElementKind.FUNCTION, compiler.mainApp); |
450 TreeElements elements = compiler.resolveNodeStatement(node, function); | 450 TreeElements elements = compiler.resolveNodeStatement(node, function); |
451 TypeCheckerVisitor checker = new TypeCheckerVisitor(compiler, elements, | 451 TypeCheckerVisitor checker = new TypeCheckerVisitor(compiler, elements, |
452 types); | 452 types); |
453 compiler.clearWarnings(); | 453 compiler.clearWarnings(); |
454 checker.analyze(node); | 454 checker.analyze(node); |
455 compareWarningKinds(text, expectedWarnings, compiler.warnings); | 455 compareWarningKinds(text, expectedWarnings, compiler.warnings); |
456 } | 456 } |
457 | 457 |
458 analyzeIn(ClassElement classElement, String text, [expectedWarnings]) { | 458 analyzeIn(ClassElement classElement, String text, [expectedWarnings]) { |
459 if (expectedWarnings === null) expectedWarnings = []; | 459 if (expectedWarnings == null) expectedWarnings = []; |
460 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; | 460 if (expectedWarnings is !List) expectedWarnings = [expectedWarnings]; |
461 | 461 |
462 Token tokens = scan(text); | 462 Token tokens = scan(text); |
463 NodeListener listener = new NodeListener(compiler, null); | 463 NodeListener listener = new NodeListener(compiler, null); |
464 Parser parser = new Parser(listener); | 464 Parser parser = new Parser(listener); |
465 parser.parseStatement(tokens); | 465 parser.parseStatement(tokens); |
466 Node node = listener.popNode(); | 466 Node node = listener.popNode(); |
467 classElement.ensureResolved(compiler); | 467 classElement.ensureResolved(compiler); |
468 TreeElements elements = compiler.resolveNodeStatement(node, classElement); | 468 TreeElements elements = compiler.resolveNodeStatement(node, classElement); |
469 TypeCheckerVisitor checker = new TypeCheckerVisitor(compiler, elements, | 469 TypeCheckerVisitor checker = new TypeCheckerVisitor(compiler, elements, |
470 types); | 470 types); |
471 compiler.clearWarnings(); | 471 compiler.clearWarnings(); |
472 checker.currentClass = classElement; | 472 checker.currentClass = classElement; |
473 checker.analyze(node); | 473 checker.analyze(node); |
474 compareWarningKinds(text, expectedWarnings, compiler.warnings); | 474 compareWarningKinds(text, expectedWarnings, compiler.warnings); |
475 } | 475 } |
OLD | NEW |