Index: frog/leg/tree_validator.dart |
=================================================================== |
--- frog/leg/tree_validator.dart (revision 5925) |
+++ frog/leg/tree_validator.dart (working copy) |
@@ -1,68 +0,0 @@ |
-// Copyright (c) 2011, 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. |
- |
-class TreeValidatorTask extends CompilerTask { |
- TreeValidatorTask(Compiler compiler) : super(compiler); |
- |
- void validate(Node tree) { |
- assert(check(tree)); |
- } |
- |
- bool check(Node tree) { |
- List<InvalidNodeError> errors = []; |
- void report(node, message) { |
- final error = new InvalidNodeError(node, message); |
- errors.add(error); |
- compiler.reportWarning(node, message); |
- }; |
- final validator = new ValidatorVisitor(report); |
- tree.accept(new TraversingVisitor(validator)); |
- |
- return errors.isEmpty(); |
- } |
-} |
- |
-class ValidatorVisitor extends AbstractVisitor { |
- final Function reportInvalidNode; |
- |
- ValidatorVisitor(Function this.reportInvalidNode); |
- |
- expect(Node node, bool test, [message]) { |
- if (!test) reportInvalidNode(node, message); |
- } |
- |
- visitNode(Node node) {} |
- |
- visitSendSet(SendSet node) { |
- final selector = node.selector; |
- final name = node.assignmentOperator.source.stringValue; |
- final arguments = node.arguments; |
- |
- expect(node, arguments !== null); |
- expect(node, selector is Identifier, 'selector is not assignable'); |
- if (name === '++' || name === '--') { |
- expect(node, node.assignmentOperator is Operator); |
- if (node.isIndex) { |
- expect(node.arguments.tail.head, node.arguments.tail.isEmpty()); |
- } else { |
- expect(node.arguments.head, node.arguments.isEmpty()); |
- } |
- } else { |
- expect(node, !node.arguments.isEmpty()); |
- } |
- } |
-} |
- |
-class InvalidNodeError { |
- final Node node; |
- final String message; |
- InvalidNodeError(this.node, [this.message]); |
- |
- toString() { |
- String nodeString = new Unparser(true).unparse(node); |
- String result = 'invalid node: $nodeString'; |
- if (message !== null) result = '$result ($message)'; |
- return result; |
- } |
-} |