OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 '../common.dart'; | 5 import '../common.dart'; |
6 import '../common/names.dart' show Identifiers, Names, Selectors; | 6 import '../common/names.dart' show Identifiers, Names, Selectors; |
7 import '../compiler.dart' show Compiler; | 7 import '../compiler.dart' show Compiler; |
8 import '../elements/elements.dart'; | 8 import '../elements/elements.dart'; |
9 import '../tree/tree.dart'; | 9 import '../tree/tree.dart'; |
10 import '../types/types.dart'; | 10 import '../types/types.dart'; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 | 118 |
119 /// Returns [true] if the given element is a complex [noSuchMethod] | 119 /// Returns [true] if the given element is a complex [noSuchMethod] |
120 /// implementation. An implementation is complex if it falls into | 120 /// implementation. An implementation is complex if it falls into |
121 /// category D, as described above. | 121 /// category D, as described above. |
122 bool isComplex(FunctionElement element) { | 122 bool isComplex(FunctionElement element) { |
123 assert(element.name == Identifiers.noSuchMethod_); | 123 assert(element.name == Identifiers.noSuchMethod_); |
124 return otherImpls.contains(element); | 124 return otherImpls.contains(element); |
125 } | 125 } |
126 | 126 |
127 _subcategorizeOther(FunctionElement element) { | 127 _subcategorizeOther(FunctionElement element) { |
128 if (_compiler.globalInference.throwsAlways(element)) { | 128 if (_compiler.globalInference.results.throwsAlways(element)) { |
129 complexNoReturnImpls.add(element); | 129 complexNoReturnImpls.add(element); |
130 } else { | 130 } else { |
131 complexReturningImpls.add(element); | 131 complexReturningImpls.add(element); |
132 } | 132 } |
133 } | 133 } |
134 | 134 |
135 NsmCategory _categorizeImpl(FunctionElement element) { | 135 NsmCategory _categorizeImpl(FunctionElement element) { |
136 assert(element.name == Identifiers.noSuchMethod_); | 136 assert(element.name == Identifiers.noSuchMethod_); |
137 if (defaultImpls.contains(element)) { | 137 if (defaultImpls.contains(element)) { |
138 return NsmCategory.DEFAULT; | 138 return NsmCategory.DEFAULT; |
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 if (body.statements.nodes.head is ExpressionStatement) { | 262 if (body.statements.nodes.head is ExpressionStatement) { |
263 ExpressionStatement stmt = body.statements.nodes.head; | 263 ExpressionStatement stmt = body.statements.nodes.head; |
264 return stmt.expression is Throw; | 264 return stmt.expression is Throw; |
265 } | 265 } |
266 } | 266 } |
267 return false; | 267 return false; |
268 } | 268 } |
269 } | 269 } |
270 | 270 |
271 enum NsmCategory { DEFAULT, THROWING, NOT_APPLICABLE, OTHER, } | 271 enum NsmCategory { DEFAULT, THROWING, NOT_APPLICABLE, OTHER, } |
OLD | NEW |