| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 library kernel.checks; | 4 library kernel.checks; |
| 5 | 5 |
| 6 import 'ast.dart'; | 6 import 'ast.dart'; |
| 7 | 7 |
| 8 void runSanityChecks(Program program) { | 8 void runSanityChecks(Program program) { |
| 9 CheckParentPointers.check(program); | 9 CheckParentPointers.check(program); |
| 10 CheckReferences.check(program); | 10 CheckReferences.check(program); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 | 68 |
| 69 visitClass(Class node) { | 69 visitClass(Class node) { |
| 70 currentClass = node; | 70 currentClass = node; |
| 71 typeParameters.addAll(node.typeParameters); | 71 typeParameters.addAll(node.typeParameters); |
| 72 node.visitChildren(this); | 72 node.visitChildren(this); |
| 73 typeParameters.removeAll(node.typeParameters); | 73 typeParameters.removeAll(node.typeParameters); |
| 74 currentClass = null; | 74 currentClass = null; |
| 75 } | 75 } |
| 76 | 76 |
| 77 visitFunctionNode(FunctionNode node) { | 77 visitFunctionNode(FunctionNode node) { |
| 78 for (int i = 1; i < node.namedParameters.length; ++i) { |
| 79 if (node.namedParameters[i - 1].compareTo(node.namedParameters[i]) >= 0) { |
| 80 throw 'Named parameters are not sorted on function found in $context'; |
| 81 } |
| 82 } |
| 78 typeParameters.addAll(node.typeParameters); | 83 typeParameters.addAll(node.typeParameters); |
| 79 node.visitChildren(this); | 84 node.visitChildren(this); |
| 80 typeParameters.removeAll(node.typeParameters); | 85 typeParameters.removeAll(node.typeParameters); |
| 81 } | 86 } |
| 82 | 87 |
| 88 visitFunctionType(FunctionType node) { |
| 89 for (int i = 1; i < node.namedParameters.length; ++i) { |
| 90 if (node.namedParameters[i - 1].compareTo(node.namedParameters[i]) >= 0) { |
| 91 throw 'Named parameters are not sorted on function type found in ' |
| 92 '$context'; |
| 93 } |
| 94 } |
| 95 node.visitChildren(this); |
| 96 } |
| 97 |
| 83 @override | 98 @override |
| 84 defaultMemberReference(Member node) { | 99 defaultMemberReference(Member node) { |
| 85 if (!members.contains(node)) { | 100 if (!members.contains(node)) { |
| 86 throw 'Dangling reference to $node found in $context.\n' | 101 throw 'Dangling reference to $node found in $context.\n' |
| 87 'Parent pointer is set to ${node.parent}'; | 102 'Parent pointer is set to ${node.parent}'; |
| 88 } | 103 } |
| 89 } | 104 } |
| 90 | 105 |
| 91 @override | 106 @override |
| 92 visitClassReference(Class node) { | 107 visitClassReference(Class node) { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 129 node.types.isEmpty) { | 144 node.types.isEmpty) { |
| 130 ++emptyArguments; | 145 ++emptyArguments; |
| 131 } | 146 } |
| 132 } | 147 } |
| 133 | 148 |
| 134 defaultNode(Node node) { | 149 defaultNode(Node node) { |
| 135 ++size; | 150 ++size; |
| 136 node.visitChildren(this); | 151 node.visitChildren(this); |
| 137 } | 152 } |
| 138 } | 153 } |
| OLD | NEW |