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

Side by Side Diff: tests/compiler/dart2js/related_types.dart

Issue 1421003004: Add CoreClasses (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comment. Created 5 years, 1 month 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
« no previous file with comments | « tests/compiler/dart2js/mock_compiler.dart ('k') | tests/compiler/dart2js/resolver_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 related_types; 5 library related_types;
6 6
7 import 'package:compiler/src/commandline_options.dart'; 7 import 'package:compiler/src/commandline_options.dart';
8 import 'package:compiler/src/compiler.dart'; 8 import 'package:compiler/src/compiler.dart';
9 import 'package:compiler/src/core_types.dart'; 9 import 'package:compiler/src/core_types.dart';
10 import 'package:compiler/src/dart_types.dart'; 10 import 'package:compiler/src/dart_types.dart';
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 class RelatedTypesChecker extends TraversalVisitor<DartType, dynamic> { 71 class RelatedTypesChecker extends TraversalVisitor<DartType, dynamic> {
72 final Compiler compiler; 72 final Compiler compiler;
73 final ResolvedAst resolvedAst; 73 final ResolvedAst resolvedAst;
74 74
75 RelatedTypesChecker(this.compiler, ResolvedAst resolvedAst) 75 RelatedTypesChecker(this.compiler, ResolvedAst resolvedAst)
76 : this.resolvedAst = resolvedAst, 76 : this.resolvedAst = resolvedAst,
77 super(resolvedAst.elements); 77 super(resolvedAst.elements);
78 78
79 ClassWorld get world => compiler.world; 79 ClassWorld get world => compiler.world;
80 80
81 CoreClasses get coreClasses => compiler.coreClasses;
82
81 CoreTypes get coreTypes => compiler.coreTypes; 83 CoreTypes get coreTypes => compiler.coreTypes;
82 84
83 DiagnosticReporter get reporter => compiler.reporter; 85 DiagnosticReporter get reporter => compiler.reporter;
84 86
85 InterfaceType get thisType => resolvedAst.element.enclosingClass.thisType; 87 InterfaceType get thisType => resolvedAst.element.enclosingClass.thisType;
86 88
87 /// Returns `true` if there exists no common subtype of [left] and [right]. 89 /// Returns `true` if there exists no common subtype of [left] and [right].
88 bool hasEmptyIntersection(DartType left, DartType right) { 90 bool hasEmptyIntersection(DartType left, DartType right) {
89 if (left == right) return false; 91 if (left == right) return false;
90 if (left == null || right == null) return false; 92 if (left == null || right == null) return false;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 InterfaceType findClassType(DartType receiver, ClassElement cls) { 162 InterfaceType findClassType(DartType receiver, ClassElement cls) {
161 InterfaceType interfaceType = findInterfaceType(receiver); 163 InterfaceType interfaceType = findInterfaceType(receiver);
162 if (interfaceType == null) return null; 164 if (interfaceType == null) return null;
163 InterfaceType mapType = interfaceType.asInstanceOf(cls); 165 InterfaceType mapType = interfaceType.asInstanceOf(cls);
164 if (mapType == null) return null; 166 if (mapType == null) return null;
165 return mapType; 167 return mapType;
166 } 168 }
167 169
168 /// Returns the supertype of [receiver] that implements `Iterable`, if any. 170 /// Returns the supertype of [receiver] that implements `Iterable`, if any.
169 InterfaceType findIterableType(DartType receiver) { 171 InterfaceType findIterableType(DartType receiver) {
170 return findClassType(receiver, compiler.iterableClass); 172 return findClassType(receiver, coreClasses.iterableClass);
171 } 173 }
172 174
173 /// Returns the element type of the supertype of [receiver] that implements 175 /// Returns the element type of the supertype of [receiver] that implements
174 /// `Iterable`, if any. 176 /// `Iterable`, if any.
175 DartType findIterableElementType(InterfaceType iterableType) { 177 DartType findIterableElementType(InterfaceType iterableType) {
176 if (iterableType == null) return null; 178 if (iterableType == null) return null;
177 return iterableType.typeArguments[0]; 179 return iterableType.typeArguments[0];
178 } 180 }
179 181
180 /// Returns the supertype of [receiver] that implements `Map`, if any. 182 /// Returns the supertype of [receiver] that implements `Map`, if any.
181 InterfaceType findMapType(DartType receiver) { 183 InterfaceType findMapType(DartType receiver) {
182 return findClassType(receiver, compiler.mapClass); 184 return findClassType(receiver, coreClasses.mapClass);
183 } 185 }
184 186
185 /// Returns the key type of the supertype of [receiver] that implements 187 /// Returns the key type of the supertype of [receiver] that implements
186 /// `Map`, if any. 188 /// `Map`, if any.
187 DartType findMapKeyType(InterfaceType mapType) { 189 DartType findMapKeyType(InterfaceType mapType) {
188 if (mapType == null) return null; 190 if (mapType == null) return null;
189 return mapType.typeArguments[0]; 191 return mapType.typeArguments[0];
190 } 192 }
191 193
192 /// Returns the value type of the supertype of [receiver] that implements 194 /// Returns the value type of the supertype of [receiver] that implements
193 /// `Map`, if any. 195 /// `Map`, if any.
194 DartType findMapValueType(InterfaceType mapType) { 196 DartType findMapValueType(InterfaceType mapType) {
195 if (mapType == null) return null; 197 if (mapType == null) return null;
196 return mapType.typeArguments[1]; 198 return mapType.typeArguments[1];
197 } 199 }
198 200
199 /// Returns the supertype of [receiver] that implements `List`, if any. 201 /// Returns the supertype of [receiver] that implements `List`, if any.
200 InterfaceType findListType(DartType receiver) { 202 InterfaceType findListType(DartType receiver) {
201 return findClassType(receiver, compiler.listClass); 203 return findClassType(receiver, coreClasses.listClass);
202 } 204 }
203 205
204 /// Returns the element type of the supertype of [receiver] that implements 206 /// Returns the element type of the supertype of [receiver] that implements
205 /// `List`, if any. 207 /// `List`, if any.
206 DartType findListElementType(InterfaceType listType) { 208 DartType findListElementType(InterfaceType listType) {
207 if (listType == null) return null; 209 if (listType == null) return null;
208 return listType.typeArguments[0]; 210 return listType.typeArguments[0];
209 } 211 }
210 212
211 /// Returns the implied return type of [type] or `dynamic` if no return type 213 /// Returns the implied return type of [type] or `dynamic` if no return type
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 ClassElement findClass(DartType type) => type.accept(this, null); 429 ClassElement findClass(DartType type) => type.accept(this, null);
428 430
429 @override 431 @override
430 ClassElement visitType(DartType type, _) => null; 432 ClassElement visitType(DartType type, _) => null;
431 433
432 @override 434 @override
433 ClassElement visitInterfaceType(InterfaceType type, _) { 435 ClassElement visitInterfaceType(InterfaceType type, _) {
434 return type.element; 436 return type.element;
435 } 437 }
436 } 438 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/mock_compiler.dart ('k') | tests/compiler/dart2js/resolver_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698