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

Side by Side Diff: pkg/analyzer/lib/src/dart/element/handle.dart

Issue 1969943002: Resynthesize _DeferredClassElement lazily. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 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) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 analyzer.src.generated.element_handle; 5 library analyzer.src.generated.element_handle;
6 6
7 import 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/constant/value.dart'; 8 import 'package:analyzer/dart/constant/value.dart';
9 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
10 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 @override 91 @override
92 InterfaceType get supertype => actualElement.supertype; 92 InterfaceType get supertype => actualElement.supertype;
93 93
94 @override 94 @override
95 InterfaceType get type => actualElement.type; 95 InterfaceType get type => actualElement.type;
96 96
97 @override 97 @override
98 List<TypeParameterElement> get typeParameters => actualElement.typeParameters; 98 List<TypeParameterElement> get typeParameters => actualElement.typeParameters;
99 99
100 @override 100 @override
101 ConstructorElement get unnamedConstructor => actualElement.unnamedConstructor; 101 ConstructorElement get unnamedConstructor {
102 ensureConstructorsReady();
103 return actualElement.unnamedConstructor;
104 }
102 105
103 @override 106 @override
104 NamedCompilationUnitMember computeNode() => super.computeNode(); 107 NamedCompilationUnitMember computeNode() => super.computeNode();
105 108
106 @override 109 /**
107 FieldElement getField(String fieldName) => actualElement.getField(fieldName); 110 * Ensure that [ClassElement.accessors] and [ClassElement.fields] are ready
111 * in [actualElement].
112 */
113 void ensureAccessorsReady() {}
114
115 /**
116 * The method is called by [ClassElementImpl.getImpl] before returning
117 * the [actualElement] as [ClassElementImpl]. At this moment we must ensure
118 * that [ClassElementImpl] is fully complete, we cannot continue filling it
119 * lazily.
120 */
121 void ensureActualElementComplete() {}
122
123 /**
124 * Ensure that [ClassElement.constructors] are ready in [actualElement].
125 */
126 void ensureConstructorsReady() {}
127
128 /**
129 * Ensure that [ClassElement.methods] are ready in [actualElement].
130 */
131 void ensureMethodsReady() {}
108 132
109 @override 133 @override
110 PropertyAccessorElement getGetter(String getterName) => 134 FieldElement getField(String fieldName) {
111 actualElement.getGetter(getterName); 135 ensureAccessorsReady();
136 return actualElement.getField(fieldName);
137 }
112 138
113 @override 139 @override
114 MethodElement getMethod(String methodName) => 140 PropertyAccessorElement getGetter(String getterName) {
115 actualElement.getMethod(methodName); 141 ensureAccessorsReady();
142 return actualElement.getGetter(getterName);
143 }
116 144
117 @override 145 @override
118 ConstructorElement getNamedConstructor(String name) => 146 MethodElement getMethod(String methodName) {
119 actualElement.getNamedConstructor(name); 147 ensureMethodsReady();
148 return actualElement.getMethod(methodName);
149 }
120 150
121 @override 151 @override
122 PropertyAccessorElement getSetter(String setterName) => 152 ConstructorElement getNamedConstructor(String name) {
123 actualElement.getSetter(setterName); 153 ensureConstructorsReady();
154 return actualElement.getNamedConstructor(name);
155 }
156
157 @override
158 PropertyAccessorElement getSetter(String setterName) {
159 ensureAccessorsReady();
160 return actualElement.getSetter(setterName);
161 }
124 162
125 @override 163 @override
126 bool isSuperConstructorAccessible(ConstructorElement constructor) => 164 bool isSuperConstructorAccessible(ConstructorElement constructor) =>
127 actualElement.isSuperConstructorAccessible(constructor); 165 actualElement.isSuperConstructorAccessible(constructor);
128 166
129 @override 167 @override
130 MethodElement lookUpConcreteMethod( 168 MethodElement lookUpConcreteMethod(
131 String methodName, LibraryElement library) => 169 String methodName, LibraryElement library) {
132 actualElement.lookUpConcreteMethod(methodName, library); 170 ensureMethodsReady();
171 return actualElement.lookUpConcreteMethod(methodName, library);
172 }
133 173
134 @override 174 @override
135 PropertyAccessorElement lookUpGetter( 175 PropertyAccessorElement lookUpGetter(
136 String getterName, LibraryElement library) => 176 String getterName, LibraryElement library) =>
137 actualElement.lookUpGetter(getterName, library); 177 actualElement.lookUpGetter(getterName, library);
138 178
139 @override 179 @override
140 PropertyAccessorElement lookUpInheritedConcreteGetter( 180 PropertyAccessorElement lookUpInheritedConcreteGetter(
141 String methodName, LibraryElement library) => 181 String methodName, LibraryElement library) {
142 actualElement.lookUpInheritedConcreteGetter(methodName, library); 182 ensureAccessorsReady();
183 return actualElement.lookUpInheritedConcreteGetter(methodName, library);
184 }
143 185
144 @override 186 @override
145 MethodElement lookUpInheritedConcreteMethod( 187 MethodElement lookUpInheritedConcreteMethod(
146 String methodName, LibraryElement library) => 188 String methodName, LibraryElement library) {
147 actualElement.lookUpInheritedConcreteMethod(methodName, library); 189 ensureMethodsReady();
190 return actualElement.lookUpInheritedConcreteMethod(methodName, library);
191 }
148 192
149 @override 193 @override
150 PropertyAccessorElement lookUpInheritedConcreteSetter( 194 PropertyAccessorElement lookUpInheritedConcreteSetter(
151 String methodName, LibraryElement library) => 195 String methodName, LibraryElement library) {
152 actualElement.lookUpInheritedConcreteSetter(methodName, library); 196 ensureAccessorsReady();
197 return actualElement.lookUpInheritedConcreteSetter(methodName, library);
198 }
153 199
154 @override 200 @override
155 MethodElement lookUpInheritedMethod( 201 MethodElement lookUpInheritedMethod(
156 String methodName, LibraryElement library) => 202 String methodName, LibraryElement library) {
157 actualElement.lookUpInheritedMethod(methodName, library); 203 ensureMethodsReady();
204 return actualElement.lookUpInheritedMethod(methodName, library);
205 }
158 206
159 @override 207 @override
160 MethodElement lookUpMethod(String methodName, LibraryElement library) => 208 MethodElement lookUpMethod(String methodName, LibraryElement library) {
161 actualElement.lookUpMethod(methodName, library); 209 ensureMethodsReady();
210 return actualElement.lookUpMethod(methodName, library);
211 }
162 212
163 @override 213 @override
164 PropertyAccessorElement lookUpSetter( 214 PropertyAccessorElement lookUpSetter(
165 String setterName, LibraryElement library) => 215 String setterName, LibraryElement library) {
166 actualElement.lookUpSetter(setterName, library); 216 ensureAccessorsReady();
217 return actualElement.lookUpSetter(setterName, library);
218 }
167 } 219 }
168 220
169 /** 221 /**
170 * A handle to a [CompilationUnitElement]. 222 * A handle to a [CompilationUnitElement].
171 */ 223 */
172 class CompilationUnitElementHandle extends ElementHandle 224 class CompilationUnitElementHandle extends ElementHandle
173 implements CompilationUnitElement { 225 implements CompilationUnitElement {
174 /** 226 /**
175 * Initialize a newly created element handle to represent the element at the 227 * Initialize a newly created element handle to represent the element at the
176 * given [_location]. The [_resynthesizer] will be used to resynthesize the 228 * given [_location]. The [_resynthesizer] will be used to resynthesize the
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 @override 460 @override
409 accept(ElementVisitor visitor) => actualElement.accept(visitor); 461 accept(ElementVisitor visitor) => actualElement.accept(visitor);
410 462
411 @override 463 @override
412 String computeDocumentationComment() => documentationComment; 464 String computeDocumentationComment() => documentationComment;
413 465
414 @override 466 @override
415 AstNode computeNode() => actualElement.computeNode(); 467 AstNode computeNode() => actualElement.computeNode();
416 468
417 @override 469 @override
418 Element getAncestor(Predicate<Element> predicate) => 470 Element getAncestor(Predicate<Element> predicate) {
419 actualElement.getAncestor(predicate); 471 if (actualElement == null) {
472 print('No actualElement: $location $runtimeType');
Paul Berry 2016/05/11 22:09:37 Looks like temporary debugging code that should be
473 }
474 return actualElement.getAncestor(predicate);
475 }
420 476
421 @override 477 @override
422 String getExtendedDisplayName(String shortName) => 478 String getExtendedDisplayName(String shortName) =>
423 actualElement.getExtendedDisplayName(shortName); 479 actualElement.getExtendedDisplayName(shortName);
424 480
425 @override 481 @override
426 bool isAccessibleIn(LibraryElement library) => 482 bool isAccessibleIn(LibraryElement library) =>
427 actualElement.isAccessibleIn(library); 483 actualElement.isAccessibleIn(library);
428 484
429 @override 485 @override
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after
1105 @override 1161 @override
1106 bool get isPotentiallyMutatedInScope => 1162 bool get isPotentiallyMutatedInScope =>
1107 actualElement.isPotentiallyMutatedInScope; 1163 actualElement.isPotentiallyMutatedInScope;
1108 1164
1109 @override 1165 @override
1110 bool get isStatic => actualElement.isStatic; 1166 bool get isStatic => actualElement.isStatic;
1111 1167
1112 @override 1168 @override
1113 DartType get type => actualElement.type; 1169 DartType get type => actualElement.type;
1114 } 1170 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698