| 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 | 4 | 
| 5 library kernel.tree_shaker; | 5 library kernel.tree_shaker; | 
| 6 | 6 | 
| 7 import '../ast.dart'; | 7 import '../ast.dart'; | 
| 8 import '../class_hierarchy.dart'; | 8 import '../class_hierarchy.dart'; | 
| 9 import '../core_types.dart'; | 9 import '../core_types.dart'; | 
| 10 | 10 | 
| (...skipping 739 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 750         visitBivariant(typeArgument); | 750         visitBivariant(typeArgument); | 
| 751       } | 751       } | 
| 752     } | 752     } | 
| 753   } | 753   } | 
| 754 | 754 | 
| 755   visitFunctionType(FunctionType node) { | 755   visitFunctionType(FunctionType node) { | 
| 756     visit(node.returnType); | 756     visit(node.returnType); | 
| 757     for (int i = 0; i < node.positionalParameters.length; ++i) { | 757     for (int i = 0; i < node.positionalParameters.length; ++i) { | 
| 758       visitContravariant(node.positionalParameters[i]); | 758       visitContravariant(node.positionalParameters[i]); | 
| 759     } | 759     } | 
| 760     node.namedParameters.values.forEach(visitContravariant); | 760     for (int i = 0; i < node.namedParameters.length; ++i) { | 
|  | 761       visitContravariant(node.namedParameters[i].type); | 
|  | 762     } | 
| 761   } | 763   } | 
| 762 | 764 | 
| 763   visitTypeParameterType(TypeParameterType node) {} | 765   visitTypeParameterType(TypeParameterType node) {} | 
| 764 | 766 | 
| 765   /// Just treat a couple of whitelisted classes as having covariant type | 767   /// Just treat a couple of whitelisted classes as having covariant type | 
| 766   /// parameters. | 768   /// parameters. | 
| 767   bool isWhitelistedCovariant(Class classNode) { | 769   bool isWhitelistedCovariant(Class classNode) { | 
| 768     if (classNode.typeParameters.isEmpty) return false; | 770     if (classNode.typeParameters.isEmpty) return false; | 
| 769     CoreTypes coreTypes = shaker.coreTypes; | 771     CoreTypes coreTypes = shaker.coreTypes; | 
| 770     return classNode == coreTypes.iteratorClass || | 772     return classNode == coreTypes.iteratorClass || | 
| 771         classNode == coreTypes.iterableClass || | 773         classNode == coreTypes.iterableClass || | 
| 772         classNode == coreTypes.futureClass || | 774         classNode == coreTypes.futureClass || | 
| 773         classNode == coreTypes.streamClass || | 775         classNode == coreTypes.streamClass || | 
| 774         classNode == coreTypes.listClass || | 776         classNode == coreTypes.listClass || | 
| 775         classNode == coreTypes.mapClass; | 777         classNode == coreTypes.mapClass; | 
| 776   } | 778   } | 
| 777 } | 779 } | 
| OLD | NEW | 
|---|