| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library engine.resolver_test; | 5 library engine.resolver_test; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'package:analyzer/src/generated/java_core.dart'; | 8 import 'package:analyzer/src/generated/java_core.dart'; |
| 9 import 'package:analyzer/src/generated/java_junit.dart'; | 9 import 'package:analyzer/src/generated/java_junit.dart'; |
| 10 import 'package:analyzer/src/generated/java_engine.dart'; | 10 import 'package:analyzer/src/generated/java_engine.dart'; |
| (...skipping 5751 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5762 * @param knownExceptions a set containing nodes that are known to not be reso
lvable and should | 5762 * @param knownExceptions a set containing nodes that are known to not be reso
lvable and should |
| 5763 * therefore not cause the test to fail | 5763 * therefore not cause the test to fail |
| 5764 **/ | 5764 **/ |
| 5765 ResolutionVerifier.con1(this._knownExceptions); | 5765 ResolutionVerifier.con1(this._knownExceptions); |
| 5766 | 5766 |
| 5767 /** | 5767 /** |
| 5768 * Assert that all of the visited identifiers were resolved. | 5768 * Assert that all of the visited identifiers were resolved. |
| 5769 */ | 5769 */ |
| 5770 void assertResolved() { | 5770 void assertResolved() { |
| 5771 if (!_unresolvedNodes.isEmpty || !_wrongTypedNodes.isEmpty) { | 5771 if (!_unresolvedNodes.isEmpty || !_wrongTypedNodes.isEmpty) { |
| 5772 PrintStringWriter writer = new PrintStringWriter(); | 5772 StringBuffer buffer = new StringBuffer(); |
| 5773 if (!_unresolvedNodes.isEmpty) { | 5773 if (!_unresolvedNodes.isEmpty) { |
| 5774 writer.print("Failed to resolve "); | 5774 buffer.write("Failed to resolve "); |
| 5775 writer.print(_unresolvedNodes.length); | 5775 buffer.write(_unresolvedNodes.length); |
| 5776 writer.println(" nodes:"); | 5776 buffer.writeln(" nodes:"); |
| 5777 _printNodes(writer, _unresolvedNodes); | 5777 _printNodes(buffer, _unresolvedNodes); |
| 5778 } | 5778 } |
| 5779 if (!_wrongTypedNodes.isEmpty) { | 5779 if (!_wrongTypedNodes.isEmpty) { |
| 5780 writer.print("Resolved "); | 5780 buffer.write("Resolved "); |
| 5781 writer.print(_wrongTypedNodes.length); | 5781 buffer.write(_wrongTypedNodes.length); |
| 5782 writer.println(" to the wrong type of element:"); | 5782 buffer.writeln(" to the wrong type of element:"); |
| 5783 _printNodes(writer, _wrongTypedNodes); | 5783 _printNodes(buffer, _wrongTypedNodes); |
| 5784 } | 5784 } |
| 5785 JUnitTestCase.fail(writer.toString()); | 5785 JUnitTestCase.fail(buffer.toString()); |
| 5786 } | 5786 } |
| 5787 } | 5787 } |
| 5788 | 5788 |
| 5789 @override | 5789 @override |
| 5790 Object visitAnnotation(Annotation node) { | 5790 Object visitAnnotation(Annotation node) { |
| 5791 node.visitChildren(this); | 5791 node.visitChildren(this); |
| 5792 ElementAnnotation elementAnnotation = node.elementAnnotation; | 5792 ElementAnnotation elementAnnotation = node.elementAnnotation; |
| 5793 if (elementAnnotation == null) { | 5793 if (elementAnnotation == null) { |
| 5794 if (_knownExceptions == null || !_knownExceptions.contains(node)) { | 5794 if (_knownExceptions == null || !_knownExceptions.contains(node)) { |
| 5795 _unresolvedNodes.add(node); | 5795 _unresolvedNodes.add(node); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5968 } else { | 5968 } else { |
| 5969 return "<unknown file- CompilationUnit.getElement() returned null>"; | 5969 return "<unknown file- CompilationUnit.getElement() returned null>"; |
| 5970 } | 5970 } |
| 5971 } else { | 5971 } else { |
| 5972 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; | 5972 return "<unknown file- CompilationUnit.getRoot() is not a CompilationUni
t>"; |
| 5973 } | 5973 } |
| 5974 } | 5974 } |
| 5975 return "<unknown file- ASTNode is null>"; | 5975 return "<unknown file- ASTNode is null>"; |
| 5976 } | 5976 } |
| 5977 | 5977 |
| 5978 void _printNodes(PrintStringWriter writer, List<AstNode> nodes) { | 5978 void _printNodes(StringBuffer buffer, List<AstNode> nodes) { |
| 5979 for (AstNode identifier in nodes) { | 5979 for (AstNode identifier in nodes) { |
| 5980 writer.print(" "); | 5980 buffer.write(" "); |
| 5981 writer.print(identifier.toString()); | 5981 buffer.write(identifier.toString()); |
| 5982 writer.print(" ("); | 5982 buffer.write(" ("); |
| 5983 writer.print(_getFileName(identifier)); | 5983 buffer.write(_getFileName(identifier)); |
| 5984 writer.print(" : "); | 5984 buffer.write(" : "); |
| 5985 writer.print(identifier.offset); | 5985 buffer.write(identifier.offset); |
| 5986 writer.println(")"); | 5986 buffer.writeln(")"); |
| 5987 } | 5987 } |
| 5988 } | 5988 } |
| 5989 } | 5989 } |
| 5990 | 5990 |
| 5991 class ResolverTestCase extends EngineTestCase { | 5991 class ResolverTestCase extends EngineTestCase { |
| 5992 /** | 5992 /** |
| 5993 * The analysis context used to parse the compilation units being resolved. | 5993 * The analysis context used to parse the compilation units being resolved. |
| 5994 */ | 5994 */ |
| 5995 AnalysisContextImpl analysisContext2; | 5995 AnalysisContextImpl analysisContext2; |
| 5996 | 5996 |
| (...skipping 2559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8556 /** | 8556 /** |
| 8557 * Counter for the number of TypeName nodes visited that are resolved. | 8557 * Counter for the number of TypeName nodes visited that are resolved. |
| 8558 */ | 8558 */ |
| 8559 int _resolvedTypeCount = 0; | 8559 int _resolvedTypeCount = 0; |
| 8560 | 8560 |
| 8561 /** | 8561 /** |
| 8562 * Assert that all of the visited nodes have a static type associated with the
m. | 8562 * Assert that all of the visited nodes have a static type associated with the
m. |
| 8563 */ | 8563 */ |
| 8564 void assertResolved() { | 8564 void assertResolved() { |
| 8565 if (!_unresolvedExpressions.isEmpty || !_unresolvedTypes.isEmpty) { | 8565 if (!_unresolvedExpressions.isEmpty || !_unresolvedTypes.isEmpty) { |
| 8566 PrintStringWriter writer = new PrintStringWriter(); | 8566 StringBuffer buffer = new StringBuffer(); |
| 8567 int unresolvedTypeCount = _unresolvedTypes.length; | 8567 int unresolvedTypeCount = _unresolvedTypes.length; |
| 8568 if (unresolvedTypeCount > 0) { | 8568 if (unresolvedTypeCount > 0) { |
| 8569 writer.print("Failed to resolve "); | 8569 buffer.write("Failed to resolve "); |
| 8570 writer.print(unresolvedTypeCount); | 8570 buffer.write(unresolvedTypeCount); |
| 8571 writer.print(" of "); | 8571 buffer.write(" of "); |
| 8572 writer.print(_resolvedTypeCount + unresolvedTypeCount); | 8572 buffer.write(_resolvedTypeCount + unresolvedTypeCount); |
| 8573 writer.println(" type names:"); | 8573 buffer.writeln(" type names:"); |
| 8574 for (TypeName identifier in _unresolvedTypes) { | 8574 for (TypeName identifier in _unresolvedTypes) { |
| 8575 writer.print(" "); | 8575 buffer.write(" "); |
| 8576 writer.print(identifier.toString()); | 8576 buffer.write(identifier.toString()); |
| 8577 writer.print(" ("); | 8577 buffer.write(" ("); |
| 8578 writer.print(_getFileName(identifier)); | 8578 buffer.write(_getFileName(identifier)); |
| 8579 writer.print(" : "); | 8579 buffer.write(" : "); |
| 8580 writer.print(identifier.offset); | 8580 buffer.write(identifier.offset); |
| 8581 writer.println(")"); | 8581 buffer.writeln(")"); |
| 8582 } | 8582 } |
| 8583 } | 8583 } |
| 8584 int unresolvedExpressionCount = _unresolvedExpressions.length; | 8584 int unresolvedExpressionCount = _unresolvedExpressions.length; |
| 8585 if (unresolvedExpressionCount > 0) { | 8585 if (unresolvedExpressionCount > 0) { |
| 8586 writer.println("Failed to resolve "); | 8586 buffer.writeln("Failed to resolve "); |
| 8587 writer.print(unresolvedExpressionCount); | 8587 buffer.write(unresolvedExpressionCount); |
| 8588 writer.print(" of "); | 8588 buffer.write(" of "); |
| 8589 writer.print(_resolvedExpressionCount + unresolvedExpressionCount); | 8589 buffer.write(_resolvedExpressionCount + unresolvedExpressionCount); |
| 8590 writer.println(" expressions:"); | 8590 buffer.writeln(" expressions:"); |
| 8591 for (Expression expression in _unresolvedExpressions) { | 8591 for (Expression expression in _unresolvedExpressions) { |
| 8592 writer.print(" "); | 8592 buffer.write(" "); |
| 8593 writer.print(expression.toString()); | 8593 buffer.write(expression.toString()); |
| 8594 writer.print(" ("); | 8594 buffer.write(" ("); |
| 8595 writer.print(_getFileName(expression)); | 8595 buffer.write(_getFileName(expression)); |
| 8596 writer.print(" : "); | 8596 buffer.write(" : "); |
| 8597 writer.print(expression.offset); | 8597 buffer.write(expression.offset); |
| 8598 writer.println(")"); | 8598 buffer.writeln(")"); |
| 8599 } | 8599 } |
| 8600 } | 8600 } |
| 8601 int invalidlyPropagatedExpressionCount = _invalidlyPropagatedExpressions.l
ength; | 8601 int invalidlyPropagatedExpressionCount = _invalidlyPropagatedExpressions.l
ength; |
| 8602 if (invalidlyPropagatedExpressionCount > 0) { | 8602 if (invalidlyPropagatedExpressionCount > 0) { |
| 8603 writer.println("Incorrectly propagated "); | 8603 buffer.writeln("Incorrectly propagated "); |
| 8604 writer.print(invalidlyPropagatedExpressionCount); | 8604 buffer.write(invalidlyPropagatedExpressionCount); |
| 8605 writer.print(" of "); | 8605 buffer.write(" of "); |
| 8606 writer.print(_propagatedExpressionCount); | 8606 buffer.write(_propagatedExpressionCount); |
| 8607 writer.println(" expressions:"); | 8607 buffer.writeln(" expressions:"); |
| 8608 for (Expression expression in _invalidlyPropagatedExpressions) { | 8608 for (Expression expression in _invalidlyPropagatedExpressions) { |
| 8609 writer.print(" "); | 8609 buffer.write(" "); |
| 8610 writer.print(expression.toString()); | 8610 buffer.write(expression.toString()); |
| 8611 writer.print(" ["); | 8611 buffer.write(" ["); |
| 8612 writer.print(expression.staticType.displayName); | 8612 buffer.write(expression.staticType.displayName); |
| 8613 writer.print(", "); | 8613 buffer.write(", "); |
| 8614 writer.print(expression.propagatedType.displayName); | 8614 buffer.write(expression.propagatedType.displayName); |
| 8615 writer.println("]"); | 8615 buffer.writeln("]"); |
| 8616 writer.print(" "); | 8616 buffer.write(" "); |
| 8617 writer.print(_getFileName(expression)); | 8617 buffer.write(_getFileName(expression)); |
| 8618 writer.print(" : "); | 8618 buffer.write(" : "); |
| 8619 writer.print(expression.offset); | 8619 buffer.write(expression.offset); |
| 8620 writer.println(")"); | 8620 buffer.writeln(")"); |
| 8621 } | 8621 } |
| 8622 } | 8622 } |
| 8623 JUnitTestCase.fail(writer.toString()); | 8623 JUnitTestCase.fail(buffer.toString()); |
| 8624 } | 8624 } |
| 8625 } | 8625 } |
| 8626 | 8626 |
| 8627 @override | 8627 @override |
| 8628 Object visitBreakStatement(BreakStatement node) => null; | 8628 Object visitBreakStatement(BreakStatement node) => null; |
| 8629 | 8629 |
| 8630 @override | 8630 @override |
| 8631 Object visitCommentReference(CommentReference node) => null; | 8631 Object visitCommentReference(CommentReference node) => null; |
| 8632 | 8632 |
| 8633 @override | 8633 @override |
| (...skipping 2523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11157 runReflectiveTests(TypeResolverVisitorTest); | 11157 runReflectiveTests(TypeResolverVisitorTest); |
| 11158 runReflectiveTests(CheckedModeCompileTimeErrorCodeTest); | 11158 runReflectiveTests(CheckedModeCompileTimeErrorCodeTest); |
| 11159 runReflectiveTests(ErrorResolverTest); | 11159 runReflectiveTests(ErrorResolverTest); |
| 11160 runReflectiveTests(HintCodeTest); | 11160 runReflectiveTests(HintCodeTest); |
| 11161 runReflectiveTests(MemberMapTest); | 11161 runReflectiveTests(MemberMapTest); |
| 11162 runReflectiveTests(NonHintCodeTest); | 11162 runReflectiveTests(NonHintCodeTest); |
| 11163 runReflectiveTests(SimpleResolverTest); | 11163 runReflectiveTests(SimpleResolverTest); |
| 11164 runReflectiveTests(StrictModeTest); | 11164 runReflectiveTests(StrictModeTest); |
| 11165 runReflectiveTests(TypePropagationTest); | 11165 runReflectiveTests(TypePropagationTest); |
| 11166 } | 11166 } |
| OLD | NEW |