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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/elements/modelx.dart

Issue 561233005: Add ElementX.declarationSite. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r40311. Created 6 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | dart/sdk/lib/_internal/compiler/implementation/scanner/listener.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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 elements.modelx; 5 library elements.modelx;
6 6
7 import 'elements.dart'; 7 import 'elements.dart';
8 import '../helpers/helpers.dart'; // Included for debug helpers. 8 import '../helpers/helpers.dart'; // Included for debug helpers.
9 import '../tree/tree.dart'; 9 import '../tree/tree.dart';
10 import '../util/util.dart'; 10 import '../util/util.dart';
(...skipping 20 matching lines...) Expand all
31 31
32 import '../scanner/scannerlib.dart' show 32 import '../scanner/scannerlib.dart' show
33 EOF_TOKEN, 33 EOF_TOKEN,
34 ErrorToken, 34 ErrorToken,
35 Token; 35 Token;
36 36
37 import '../ordered_typeset.dart' show OrderedTypeSet; 37 import '../ordered_typeset.dart' show OrderedTypeSet;
38 38
39 import 'visitor.dart' show ElementVisitor; 39 import 'visitor.dart' show ElementVisitor;
40 40
41 abstract class DeclarationSite {
42 }
43
41 abstract class ElementX extends Element { 44 abstract class ElementX extends Element {
42 static int elementHashCode = 0; 45 static int elementHashCode = 0;
43 46
44 final String name; 47 final String name;
45 final ElementKind kind; 48 final ElementKind kind;
46 final Element enclosingElement; 49 final Element enclosingElement;
47 final int hashCode = ++elementHashCode; 50 final int hashCode = ++elementHashCode;
48 Link<MetadataAnnotation> metadata = const Link<MetadataAnnotation>(); 51 Link<MetadataAnnotation> metadata = const Link<MetadataAnnotation>();
49 52
50 ElementX(this.name, this.kind, this.enclosingElement) { 53 ElementX(this.name, this.kind, this.enclosingElement) {
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 257
255 bool get hasTreeElements => analyzableElement.hasTreeElements; 258 bool get hasTreeElements => analyzableElement.hasTreeElements;
256 259
257 TreeElements get treeElements => analyzableElement.treeElements; 260 TreeElements get treeElements => analyzableElement.treeElements;
258 261
259 AnalyzableElement get analyzableElement { 262 AnalyzableElement get analyzableElement {
260 Element element = outermostEnclosingMemberOrTopLevel; 263 Element element = outermostEnclosingMemberOrTopLevel;
261 if (element.isAbstractField || element.isPrefix) return element.library; 264 if (element.isAbstractField || element.isPrefix) return element.library;
262 return element; 265 return element;
263 } 266 }
267
268 DeclarationSite get declarationSite => null;
264 } 269 }
265 270
266 class ErroneousElementX extends ElementX implements ErroneousElement { 271 class ErroneousElementX extends ElementX implements ErroneousElement {
267 final MessageKind messageKind; 272 final MessageKind messageKind;
268 final Map messageArguments; 273 final Map messageArguments;
269 274
270 ErroneousElementX(this.messageKind, this.messageArguments, 275 ErroneousElementX(this.messageKind, this.messageArguments,
271 String name, Element enclosing) 276 String name, Element enclosing)
272 : super(name, ElementKind.ERROR, enclosing); 277 : super(name, ElementKind.ERROR, enclosing);
273 278
(...skipping 799 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 1078
1074 accept(ElementVisitor visitor) => visitor.visitTypedefElement(this); 1079 accept(ElementVisitor visitor) => visitor.visitTypedefElement(this);
1075 1080
1076 // A typedef cannot be patched therefore defines itself. 1081 // A typedef cannot be patched therefore defines itself.
1077 AstElement get definingElement => this; 1082 AstElement get definingElement => this;
1078 } 1083 }
1079 1084
1080 // This class holds common information for a list of variable or field 1085 // This class holds common information for a list of variable or field
1081 // declarations. It contains the node, and the type. A [VariableElementX] 1086 // declarations. It contains the node, and the type. A [VariableElementX]
1082 // forwards its [computeType] and [parseNode] methods to this class. 1087 // forwards its [computeType] and [parseNode] methods to this class.
1083 class VariableList { 1088 class VariableList implements DeclarationSite {
1084 VariableDefinitions definitions; 1089 VariableDefinitions definitions;
1085 DartType type; 1090 DartType type;
1086 final Modifiers modifiers; 1091 final Modifiers modifiers;
1087 Link<MetadataAnnotation> metadata = const Link<MetadataAnnotation>(); 1092 Link<MetadataAnnotation> metadata = const Link<MetadataAnnotation>();
1088 1093
1089 VariableList(Modifiers this.modifiers); 1094 VariableList(Modifiers this.modifiers);
1090 1095
1091 VariableList.node(VariableDefinitions node, this.type) 1096 VariableList.node(VariableDefinitions node, this.type)
1092 : this.definitions = node, 1097 : this.definitions = node,
1093 this.modifiers = node.modifiers { 1098 this.modifiers = node.modifiers {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 return variables.type; 1207 return variables.type;
1203 } 1208 }
1204 1209
1205 bool get isInstanceMember => isClassMember && !isStatic; 1210 bool get isInstanceMember => isClassMember && !isStatic;
1206 1211
1207 // Note: cachedNode.beginToken will not be correct in all 1212 // Note: cachedNode.beginToken will not be correct in all
1208 // cases, for example, for function typed parameters. 1213 // cases, for example, for function typed parameters.
1209 Token get position => token; 1214 Token get position => token;
1210 1215
1211 accept(ElementVisitor visitor) => visitor.visitVariableElement(this); 1216 accept(ElementVisitor visitor) => visitor.visitVariableElement(this);
1217
1218 DeclarationSite get declarationSite => variables;
1212 } 1219 }
1213 1220
1214 class LocalVariableElementX extends VariableElementX 1221 class LocalVariableElementX extends VariableElementX
1215 implements LocalVariableElement { 1222 implements LocalVariableElement {
1216 LocalVariableElementX(String name, 1223 LocalVariableElementX(String name,
1217 ExecutableElement enclosingElement, 1224 ExecutableElement enclosingElement,
1218 VariableList variables, 1225 VariableList variables,
1219 Token token) 1226 Token token)
1220 : super(name, ElementKind.VARIABLE, enclosingElement, variables, token) { 1227 : super(name, ElementKind.VARIABLE, enclosingElement, variables, token) {
1221 createDefinitions(variables.definitions); 1228 createDefinitions(variables.definitions);
(...skipping 1472 matching lines...) Expand 10 before | Expand all | Expand 10 after
2694 AstElement get definingElement; 2701 AstElement get definingElement;
2695 2702
2696 bool get hasResolvedAst => definingElement.hasTreeElements; 2703 bool get hasResolvedAst => definingElement.hasTreeElements;
2697 2704
2698 ResolvedAst get resolvedAst { 2705 ResolvedAst get resolvedAst {
2699 return new ResolvedAst(declaration, 2706 return new ResolvedAst(declaration,
2700 definingElement.node, definingElement.treeElements); 2707 definingElement.node, definingElement.treeElements);
2701 } 2708 }
2702 2709
2703 } 2710 }
OLDNEW
« no previous file with comments | « no previous file | dart/sdk/lib/_internal/compiler/implementation/scanner/listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698