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

Side by Side Diff: pkg/compiler/lib/src/resolution/class_hierarchy.dart

Issue 2905463003: Use failedAt in more places (Closed)
Patch Set: Created 3 years, 6 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
« no previous file with comments | « no previous file | pkg/compiler/lib/src/resolution/class_members.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 dart2js.resolution.class_hierarchy; 5 library dart2js.resolution.class_hierarchy;
6 6
7 import '../common.dart'; 7 import '../common.dart';
8 import '../common/resolution.dart' show Resolution; 8 import '../common/resolution.dart' show Resolution;
9 import '../common_elements.dart' show CommonElements; 9 import '../common_elements.dart' show CommonElements;
10 import '../elements/resolution_types.dart'; 10 import '../elements/resolution_types.dart';
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 } else { 172 } else {
173 superElement.ensureResolved(resolution); 173 superElement.ensureResolved(resolution);
174 } 174 }
175 element.supertype = superElement.computeType(resolution); 175 element.supertype = superElement.computeType(resolution);
176 } 176 }
177 } 177 }
178 178
179 if (element.interfaces == null) { 179 if (element.interfaces == null) {
180 element.interfaces = resolveInterfaces(node.interfaces, node.superclass); 180 element.interfaces = resolveInterfaces(node.interfaces, node.superclass);
181 } else { 181 } else {
182 assert(invariant(element, element.hasIncompleteHierarchy)); 182 assert(element.hasIncompleteHierarchy, failedAt(element));
183 } 183 }
184 calculateAllSupertypes(element); 184 calculateAllSupertypes(element);
185 185
186 if (!element.hasConstructor) { 186 if (!element.hasConstructor) {
187 Element superMember = element.superclass.localLookup(''); 187 Element superMember = element.superclass.localLookup('');
188 if (superMember == null) { 188 if (superMember == null) {
189 MessageKind kind = MessageKind.CANNOT_FIND_UNNAMED_CONSTRUCTOR; 189 MessageKind kind = MessageKind.CANNOT_FIND_UNNAMED_CONSTRUCTOR;
190 Map arguments = {'className': element.superclass.name}; 190 Map arguments = {'className': element.superclass.name};
191 // TODO(ahe): Why is this a compile-time error? Or if it is an error, 191 // TODO(ahe): Why is this a compile-time error? Or if it is an error,
192 // why do we bother to registerThrowNoSuchMethod below? 192 // why do we bother to registerThrowNoSuchMethod below?
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 constructor.computeType(resolution); 352 constructor.computeType(resolution);
353 return constructor; 353 return constructor;
354 } 354 }
355 355
356 void doApplyMixinTo(MixinApplicationElementX mixinApplication, 356 void doApplyMixinTo(MixinApplicationElementX mixinApplication,
357 ResolutionDartType supertype, ResolutionDartType mixinType) { 357 ResolutionDartType supertype, ResolutionDartType mixinType) {
358 Node node = mixinApplication.parseNode(resolution.parsingContext); 358 Node node = mixinApplication.parseNode(resolution.parsingContext);
359 359
360 if (mixinApplication.supertype != null) { 360 if (mixinApplication.supertype != null) {
361 // [supertype] is not null if there was a cycle. 361 // [supertype] is not null if there was a cycle.
362 assert(invariant(node, reporter.hasReportedError)); 362 assert(reporter.hasReportedError, failedAt(node));
363 supertype = mixinApplication.supertype; 363 supertype = mixinApplication.supertype;
364 assert(invariant(node, supertype.isObject)); 364 assert(supertype.isObject, failedAt(node));
365 } else { 365 } else {
366 mixinApplication.supertype = supertype; 366 mixinApplication.supertype = supertype;
367 } 367 }
368 368
369 // Named mixin application may have an 'implements' clause. 369 // Named mixin application may have an 'implements' clause.
370 NamedMixinApplication namedMixinApplication = 370 NamedMixinApplication namedMixinApplication =
371 node.asNamedMixinApplication(); 371 node.asNamedMixinApplication();
372 Link<ResolutionDartType> interfaces = (namedMixinApplication != null) 372 Link<ResolutionDartType> interfaces = (namedMixinApplication != null)
373 ? resolveInterfaces( 373 ? resolveInterfaces(
374 namedMixinApplication.interfaces, namedMixinApplication.superclass) 374 namedMixinApplication.interfaces, namedMixinApplication.superclass)
375 : const Link<ResolutionDartType>(); 375 : const Link<ResolutionDartType>();
376 376
377 // The class that is the result of a mixin application implements 377 // The class that is the result of a mixin application implements
378 // the interface of the class that was mixed in so always prepend 378 // the interface of the class that was mixed in so always prepend
379 // that to the interface list. 379 // that to the interface list.
380 if (mixinApplication.interfaces == null) { 380 if (mixinApplication.interfaces == null) {
381 if (mixinType.isInterfaceType) { 381 if (mixinType.isInterfaceType) {
382 // Avoid malformed types in the interfaces. 382 // Avoid malformed types in the interfaces.
383 interfaces = interfaces.prepend(mixinType); 383 interfaces = interfaces.prepend(mixinType);
384 } 384 }
385 mixinApplication.interfaces = interfaces; 385 mixinApplication.interfaces = interfaces;
386 } else { 386 } else {
387 assert( 387 assert(
388 invariant(mixinApplication, mixinApplication.hasIncompleteHierarchy)); 388 mixinApplication.hasIncompleteHierarchy, failedAt(mixinApplication));
389 } 389 }
390 390
391 ClassElement superclass = supertype.element; 391 ClassElement superclass = supertype.element;
392 if (mixinType.kind != ResolutionTypeKind.INTERFACE) { 392 if (mixinType.kind != ResolutionTypeKind.INTERFACE) {
393 mixinApplication.hasIncompleteHierarchy = true; 393 mixinApplication.hasIncompleteHierarchy = true;
394 mixinApplication.allSupertypesAndSelf = superclass.allSupertypesAndSelf; 394 mixinApplication.allSupertypesAndSelf = superclass.allSupertypesAndSelf;
395 return; 395 return;
396 } 396 }
397 397
398 assert(mixinApplication.mixinType == null); 398 assert(mixinApplication.mixinType == null);
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 Identifier selector = node.selector.asIdentifier(); 646 Identifier selector = node.selector.asIdentifier();
647 var e = prefixElement.lookupLocalMember(selector.source); 647 var e = prefixElement.lookupLocalMember(selector.source);
648 if (e == null || !e.impliesType) { 648 if (e == null || !e.impliesType) {
649 reporter.reportErrorMessage(node.selector, 649 reporter.reportErrorMessage(node.selector,
650 MessageKind.CANNOT_RESOLVE_TYPE, {'typeName': node.selector}); 650 MessageKind.CANNOT_RESOLVE_TYPE, {'typeName': node.selector});
651 return; 651 return;
652 } 652 }
653 loadSupertype(e, node); 653 loadSupertype(e, node);
654 } 654 }
655 } 655 }
OLDNEW
« no previous file with comments | « no previous file | pkg/compiler/lib/src/resolution/class_members.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698