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 library analyzer.src.task.strong_mode; | 5 library analyzer.src.task.strong_mode; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analyzer/src/generated/ast.dart'; | 9 import 'package:analyzer/src/generated/ast.dart'; |
10 import 'package:analyzer/src/generated/element.dart'; | 10 import 'package:analyzer/src/generated/element.dart'; |
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 if (overriddenMethods.isEmpty || !_onlyMethods(overriddenMethods)) { | 388 if (overriddenMethods.isEmpty || !_onlyMethods(overriddenMethods)) { |
389 return; | 389 return; |
390 } | 390 } |
391 MethodElementImpl element = methodElement as MethodElementImpl; | 391 MethodElementImpl element = methodElement as MethodElementImpl; |
392 _setReturnType(element, _computeReturnType(overriddenMethods)); | 392 _setReturnType(element, _computeReturnType(overriddenMethods)); |
393 } | 393 } |
394 // | 394 // |
395 // Infer the parameter types. | 395 // Infer the parameter types. |
396 // | 396 // |
397 List<ParameterElement> parameters = methodElement.parameters; | 397 List<ParameterElement> parameters = methodElement.parameters; |
398 var length = parameters.length; | 398 int length = parameters.length; |
399 for (int i = 0; i < length; ++i) { | 399 for (int i = 0; i < length; ++i) { |
400 ParameterElement parameter = parameters[i]; | 400 ParameterElement parameter = parameters[i]; |
401 if (parameter is ParameterElementImpl && parameter.hasImplicitType) { | 401 if (parameter is ParameterElementImpl && parameter.hasImplicitType) { |
402 overriddenMethods = overriddenMethods ?? | 402 if (overriddenMethods == null) { |
403 inheritanceManager.lookupOverrides( | 403 overriddenMethods = inheritanceManager.lookupOverrides( |
404 methodElement.enclosingElement, methodElement.name); | 404 methodElement.enclosingElement, methodElement.name); |
| 405 } |
405 if (overriddenMethods.isEmpty || !_onlyMethods(overriddenMethods)) { | 406 if (overriddenMethods.isEmpty || !_onlyMethods(overriddenMethods)) { |
406 return; | 407 return; |
407 } | 408 } |
408 parameter.type = _computeParameterType(parameter, i, overriddenMethods); | 409 parameter.type = _computeParameterType(parameter, i, overriddenMethods); |
409 } | 410 } |
410 } | 411 } |
411 } | 412 } |
412 | 413 |
413 /** | 414 /** |
414 * Infer type information for all of the instance members in the given | 415 * Infer type information for all of the instance members in the given |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 results.add(element); | 538 results.add(element); |
538 } | 539 } |
539 } | 540 } |
540 } | 541 } |
541 } | 542 } |
542 | 543 |
543 /** | 544 /** |
544 * A class of exception that is not used anywhere else. | 545 * A class of exception that is not used anywhere else. |
545 */ | 546 */ |
546 class _CycleException implements Exception {} | 547 class _CycleException implements Exception {} |
OLD | NEW |