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

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

Issue 1881013002: Expand ResolvedAst to handle synthetic constructors. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments + fix test, cps and compilation units for injected members. 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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; 5 library dart2js.resolution;
6 6
7 import 'dart:collection' show Queue; 7 import 'dart:collection' show Queue;
8 8
9 import '../common.dart'; 9 import '../common.dart';
10 import '../common/names.dart' show Identifiers; 10 import '../common/names.dart' show Identifiers;
(...skipping 708 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 reporter.reportErrorMessage( 719 reporter.reportErrorMessage(
720 member, MessageKind.ILLEGAL_MIXIN_CONSTRUCTOR); 720 member, MessageKind.ILLEGAL_MIXIN_CONSTRUCTOR);
721 } else { 721 } else {
722 // Get the resolution tree and check that the resolved member 722 // Get the resolution tree and check that the resolved member
723 // doesn't use 'super'. This is the part of the 'super' mixin 723 // doesn't use 'super'. This is the part of the 'super' mixin
724 // check that happens when a function is resolved before the 724 // check that happens when a function is resolved before the
725 // mixin application has been performed. 725 // mixin application has been performed.
726 // TODO(johnniwinther): Obtain the [TreeElements] for [member] 726 // TODO(johnniwinther): Obtain the [TreeElements] for [member]
727 // differently. 727 // differently.
728 if (compiler.enqueuer.resolution.hasBeenProcessed(member)) { 728 if (compiler.enqueuer.resolution.hasBeenProcessed(member)) {
729 checkMixinSuperUses( 729 if (member.resolvedAst.kind == ResolvedAstKind.PARSED) {
730 member.resolvedAst.elements, mixinApplication, mixin); 730 checkMixinSuperUses(
731 member.resolvedAst.elements, mixinApplication, mixin);
732 }
731 } 733 }
732 } 734 }
733 }); 735 });
734 } 736 }
735 737
736 void checkMixinSuperUses(TreeElements resolutionTree, 738 void checkMixinSuperUses(TreeElements elements,
737 MixinApplicationElement mixinApplication, ClassElement mixin) { 739 MixinApplicationElement mixinApplication, ClassElement mixin) {
738 // TODO(johnniwinther): Avoid the use of [TreeElements] here. 740 // TODO(johnniwinther): Avoid the use of [TreeElements] here.
739 if (resolutionTree == null) return; 741 Iterable<SourceSpan> superUses = elements.superUses;
740 Iterable<SourceSpan> superUses = resolutionTree.superUses;
741 if (superUses.isEmpty) return; 742 if (superUses.isEmpty) return;
742 DiagnosticMessage error = reporter.createMessage(mixinApplication, 743 DiagnosticMessage error = reporter.createMessage(mixinApplication,
743 MessageKind.ILLEGAL_MIXIN_WITH_SUPER, {'className': mixin.name}); 744 MessageKind.ILLEGAL_MIXIN_WITH_SUPER, {'className': mixin.name});
744 // Show the user the problematic uses of 'super' in the mixin. 745 // Show the user the problematic uses of 'super' in the mixin.
745 List<DiagnosticMessage> infos = <DiagnosticMessage>[]; 746 List<DiagnosticMessage> infos = <DiagnosticMessage>[];
746 for (SourceSpan use in superUses) { 747 for (SourceSpan use in superUses) {
747 infos.add( 748 infos.add(
748 reporter.createMessage(use, MessageKind.ILLEGAL_MIXIN_SUPER_USE)); 749 reporter.createMessage(use, MessageKind.ILLEGAL_MIXIN_SUPER_USE));
749 } 750 }
750 reporter.reportError(error, infos); 751 reporter.reportError(error, infos);
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 TreeElements get treeElements { 1091 TreeElements get treeElements {
1091 assert(invariant(this, _treeElements != null, 1092 assert(invariant(this, _treeElements != null,
1092 message: "TreeElements have not been computed for $this.")); 1093 message: "TreeElements have not been computed for $this."));
1093 return _treeElements; 1094 return _treeElements;
1094 } 1095 }
1095 1096
1096 void reuseElement() { 1097 void reuseElement() {
1097 _treeElements = null; 1098 _treeElements = null;
1098 } 1099 }
1099 } 1100 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/operators.dart ('k') | pkg/compiler/lib/src/serialization/element_serialization.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698