Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(281)

Side by Side Diff: pkg/analyzer/lib/src/dart/resolver/inheritance_manager.dart

Issue 1917203002: Remove more type casts (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 4
5 import 'dart:collection'; 5 import 'dart:collection';
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/token.dart'; 8 import 'package:analyzer/dart/ast/token.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
11 import 'package:analyzer/src/dart/ast/token.dart'; 11 import 'package:analyzer/src/dart/ast/token.dart';
12 import 'package:analyzer/src/dart/element/element.dart'; 12 import 'package:analyzer/src/dart/element/element.dart';
13 import 'package:analyzer/src/dart/element/member.dart'; 13 import 'package:analyzer/src/dart/element/member.dart';
14 import 'package:analyzer/src/dart/element/type.dart'; 14 import 'package:analyzer/src/dart/element/type.dart';
15 import 'package:analyzer/src/generated/error.dart'; 15 import 'package:analyzer/src/generated/error.dart';
16 import 'package:analyzer/src/generated/java_engine.dart';
16 import 'package:analyzer/src/generated/type_system.dart'; 17 import 'package:analyzer/src/generated/type_system.dart';
17 import 'package:analyzer/src/generated/utilities_dart.dart'; 18 import 'package:analyzer/src/generated/utilities_dart.dart';
18 19
19 /** 20 /**
20 * Instances of the class `InheritanceManager` manage the knowledge of where cla ss members 21 * Instances of the class `InheritanceManager` manage the knowledge of where cla ss members
21 * (methods, getters & setters) are inherited from. 22 * (methods, getters & setters) are inherited from.
22 */ 23 */
23 class InheritanceManager { 24 class InheritanceManager {
24 /** 25 /**
25 * The [LibraryElement] that is managed by this manager. 26 * The [LibraryElement] that is managed by this manager.
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after
819 820
820 /** 821 /**
821 * Loop through all of the members in the given [map], performing type 822 * Loop through all of the members in the given [map], performing type
822 * parameter substitutions using a passed [supertype]. 823 * parameter substitutions using a passed [supertype].
823 */ 824 */
824 void _substituteTypeParametersDownHierarchy( 825 void _substituteTypeParametersDownHierarchy(
825 InterfaceType superType, Map<String, ExecutableElement> map) { 826 InterfaceType superType, Map<String, ExecutableElement> map) {
826 for (String memberName in map.keys) { 827 for (String memberName in map.keys) {
827 ExecutableElement executableElement = map[memberName]; 828 ExecutableElement executableElement = map[memberName];
828 if (executableElement is MethodMember) { 829 if (executableElement is MethodMember) {
829 executableElement = 830 map[memberName] = MethodMember.from(executableElement, superType);
830 MethodMember.from(executableElement as MethodMember, superType);
831 map[memberName] = executableElement;
832 } else if (executableElement is PropertyAccessorMember) { 831 } else if (executableElement is PropertyAccessorMember) {
833 executableElement = PropertyAccessorMember.from( 832 map[memberName] =
834 executableElement as PropertyAccessorMember, superType); 833 PropertyAccessorMember.from(executableElement, superType);
835 map[memberName] = executableElement;
836 } 834 }
837 } 835 }
838 } 836 }
839 837
840 /** 838 /**
841 * Union all of the [lookupMaps] together into a single map, grouping the Exec utableElements 839 * Union all of the [lookupMaps] together into a single map, grouping the Exec utableElements
842 * into a list where none of the elements are equal where equality is determin ed by having equal 840 * into a list where none of the elements are equal where equality is determin ed by having equal
843 * function types. (We also take note too of the kind of the element: ()->int and () -> int may 841 * function types. (We also take note too of the kind of the element: ()->int and () -> int may
844 * not be equal if one is a getter and the other is a method.) 842 * not be equal if one is a getter and the other is a method.)
845 * 843 *
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 DynamicTypeImpl dynamicType = DynamicTypeImpl.instance; 947 DynamicTypeImpl dynamicType = DynamicTypeImpl.instance;
950 SimpleIdentifier nameIdentifier = 948 SimpleIdentifier nameIdentifier =
951 new SimpleIdentifier(new StringToken(TokenType.IDENTIFIER, name, 0)); 949 new SimpleIdentifier(new StringToken(TokenType.IDENTIFIER, name, 0));
952 ExecutableElementImpl executable; 950 ExecutableElementImpl executable;
953 ExecutableElement elementToMerge = elementArrayToMerge[0]; 951 ExecutableElement elementToMerge = elementArrayToMerge[0];
954 if (elementToMerge is MethodElement) { 952 if (elementToMerge is MethodElement) {
955 MultiplyInheritedMethodElementImpl unionedMethod = 953 MultiplyInheritedMethodElementImpl unionedMethod =
956 new MultiplyInheritedMethodElementImpl(nameIdentifier); 954 new MultiplyInheritedMethodElementImpl(nameIdentifier);
957 unionedMethod.inheritedElements = elementArrayToMerge; 955 unionedMethod.inheritedElements = elementArrayToMerge;
958 executable = unionedMethod; 956 executable = unionedMethod;
959 } else { 957 } else if (elementToMerge is PropertyAccessorElement) {
960 MultiplyInheritedPropertyAccessorElementImpl unionedPropertyAccessor = 958 MultiplyInheritedPropertyAccessorElementImpl unionedPropertyAccessor =
961 new MultiplyInheritedPropertyAccessorElementImpl(nameIdentifier); 959 new MultiplyInheritedPropertyAccessorElementImpl(nameIdentifier);
962 unionedPropertyAccessor.getter = 960 unionedPropertyAccessor.getter = elementToMerge.isGetter;
963 (elementToMerge as PropertyAccessorElement).isGetter; 961 unionedPropertyAccessor.setter = elementToMerge.isSetter;
964 unionedPropertyAccessor.setter =
965 (elementToMerge as PropertyAccessorElement).isSetter;
966 unionedPropertyAccessor.inheritedElements = elementArrayToMerge; 962 unionedPropertyAccessor.inheritedElements = elementArrayToMerge;
967 executable = unionedPropertyAccessor; 963 executable = unionedPropertyAccessor;
964 } else {
965 throw new AnalysisException(
966 'Invalid class of element in merge: ${elementToMerge.runtimeType}');
968 } 967 }
969 int numOfParameters = numOfRequiredParameters + 968 int numOfParameters = numOfRequiredParameters +
970 numOfPositionalParameters + 969 numOfPositionalParameters +
971 namedParameters.length; 970 namedParameters.length;
972 List<ParameterElement> parameters = 971 List<ParameterElement> parameters =
973 new List<ParameterElement>(numOfParameters); 972 new List<ParameterElement>(numOfParameters);
974 int i = 0; 973 int i = 0;
975 for (int j = 0; j < numOfRequiredParameters; j++, i++) { 974 for (int j = 0; j < numOfRequiredParameters; j++, i++) {
976 ParameterElementImpl parameter = new ParameterElementImpl("", 0); 975 ParameterElementImpl parameter = new ParameterElementImpl("", 0);
977 parameter.type = dynamicType; 976 parameter.type = dynamicType;
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after
1231 } 1230 }
1232 1231
1233 /** 1232 /**
1234 * Initializes [keys] and [values]. 1233 * Initializes [keys] and [values].
1235 */ 1234 */
1236 void _initArrays(int initialCapacity) { 1235 void _initArrays(int initialCapacity) {
1237 _keys = new List<String>(initialCapacity); 1236 _keys = new List<String>(initialCapacity);
1238 _values = new List<ExecutableElement>(initialCapacity); 1237 _values = new List<ExecutableElement>(initialCapacity);
1239 } 1238 }
1240 } 1239 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698