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

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

Issue 2982993003: Remove UriReferencedElement with its uri/uriOffset/uriEnd properties. (Closed)
Patch Set: Created 3 years, 5 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.dart.element.element; 5 library analyzer.src.dart.element.element;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' show min; 8 import 'dart:math' show min;
9 9
10 import 'package:analyzer/dart/ast/ast.dart'; 10 import 'package:analyzer/dart/ast/ast.dart';
(...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1364 * Return `true` if the given [type] is a class [InterfaceType]. 1364 * Return `true` if the given [type] is a class [InterfaceType].
1365 */ 1365 */
1366 static bool _isClassInterfaceType(DartType type) { 1366 static bool _isClassInterfaceType(DartType type) {
1367 return type is InterfaceType && !type.element.isEnum; 1367 return type is InterfaceType && !type.element.isEnum;
1368 } 1368 }
1369 } 1369 }
1370 1370
1371 /** 1371 /**
1372 * A concrete implementation of a [CompilationUnitElement]. 1372 * A concrete implementation of a [CompilationUnitElement].
1373 */ 1373 */
1374 class CompilationUnitElementImpl extends UriReferencedElementImpl 1374 class CompilationUnitElementImpl extends ElementImpl
1375 implements CompilationUnitElement { 1375 implements CompilationUnitElement {
1376 /** 1376 /**
1377 * The context in which this unit is resynthesized, or `null` if the 1377 * The context in which this unit is resynthesized, or `null` if the
1378 * element is not resynthesized a summary. 1378 * element is not resynthesized a summary.
1379 */ 1379 */
1380 final ResynthesizerContext resynthesizerContext; 1380 final ResynthesizerContext resynthesizerContext;
1381 1381
1382 /** 1382 /**
1383 * The unlinked representation of the unit in the summary. 1383 * The unlinked representation of the unit in the summary.
1384 */ 1384 */
(...skipping 1955 matching lines...) Expand 10 before | Expand all | Expand 10 after
3340 * with the type is implicitly a child of this element and should be visted by 3340 * with the type is implicitly a child of this element and should be visted by
3341 * the given [visitor]. 3341 * the given [visitor].
3342 */ 3342 */
3343 void _safelyVisitPossibleChild(DartType type, ElementVisitor visitor) { 3343 void _safelyVisitPossibleChild(DartType type, ElementVisitor visitor) {
3344 Element element = type?.element; 3344 Element element = type?.element;
3345 if (element is GenericFunctionTypeElementImpl) { 3345 if (element is GenericFunctionTypeElementImpl) {
3346 element.accept(visitor); 3346 element.accept(visitor);
3347 } 3347 }
3348 } 3348 }
3349 3349
3350 String _selectUri(
3351 String defaultUri, List<UnlinkedConfiguration> configurations) {
3352 for (UnlinkedConfiguration configuration in configurations) {
3353 if (context.declaredVariables.get(configuration.name) ==
3354 configuration.value) {
3355 return configuration.uri;
3356 }
3357 }
3358 return defaultUri;
3359 }
3360
3350 static int findElementIndexUsingIdentical(List items, Object item) { 3361 static int findElementIndexUsingIdentical(List items, Object item) {
3351 int length = items.length; 3362 int length = items.length;
3352 for (int i = 0; i < length; i++) { 3363 for (int i = 0; i < length; i++) {
3353 if (identical(items[i], item)) { 3364 if (identical(items[i], item)) {
3354 return i; 3365 return i;
3355 } 3366 }
3356 } 3367 }
3357 throw new StateError('Unable to find $item in $items'); 3368 throw new StateError('Unable to find $item in $items');
3358 } 3369 }
3359 } 3370 }
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after
4164 super.visitChildren(visitor); 4175 super.visitChildren(visitor);
4165 _safelyVisitPossibleChild(returnType, visitor); 4176 _safelyVisitPossibleChild(returnType, visitor);
4166 safelyVisitChildren(typeParameters, visitor); 4177 safelyVisitChildren(typeParameters, visitor);
4167 safelyVisitChildren(parameters, visitor); 4178 safelyVisitChildren(parameters, visitor);
4168 } 4179 }
4169 } 4180 }
4170 4181
4171 /** 4182 /**
4172 * A concrete implementation of an [ExportElement]. 4183 * A concrete implementation of an [ExportElement].
4173 */ 4184 */
4174 class ExportElementImpl extends UriReferencedElementImpl 4185 class ExportElementImpl extends ElementImpl implements ExportElement {
4175 implements ExportElement {
4176 /** 4186 /**
4177 * The unlinked representation of the export in the summary. 4187 * The unlinked representation of the export in the summary.
4178 */ 4188 */
4179 final UnlinkedExportPublic _unlinkedExportPublic; 4189 final UnlinkedExportPublic _unlinkedExportPublic;
4180 4190
4181 /** 4191 /**
4182 * The unlinked representation of the export in the summary. 4192 * The unlinked representation of the export in the summary.
4183 */ 4193 */
4184 final UnlinkedExportNonPublic _unlinkedExportNonPublic; 4194 final UnlinkedExportNonPublic _unlinkedExportNonPublic;
4185 4195
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4224 } 4234 }
4225 4235
4226 void set combinators(List<NamespaceCombinator> combinators) { 4236 void set combinators(List<NamespaceCombinator> combinators) {
4227 _assertNotResynthesized(_unlinkedExportPublic); 4237 _assertNotResynthesized(_unlinkedExportPublic);
4228 _combinators = combinators; 4238 _combinators = combinators;
4229 } 4239 }
4230 4240
4231 @override 4241 @override
4232 LibraryElement get exportedLibrary { 4242 LibraryElement get exportedLibrary {
4233 if (_unlinkedExportNonPublic != null && _exportedLibrary == null) { 4243 if (_unlinkedExportNonPublic != null && _exportedLibrary == null) {
4244 _selectedUri ??= _selectUri(
4245 _unlinkedExportPublic.uri, _unlinkedExportPublic.configurations);
4234 LibraryElementImpl library = enclosingElement as LibraryElementImpl; 4246 LibraryElementImpl library = enclosingElement as LibraryElementImpl;
4235 _exportedLibrary = library.resynthesizerContext.buildExportedLibrary(uri); 4247 _exportedLibrary =
4248 library.resynthesizerContext.buildExportedLibrary(_selectedUri);
4236 } 4249 }
4237 return _exportedLibrary; 4250 return _exportedLibrary;
4238 } 4251 }
4239 4252
4240 void set exportedLibrary(LibraryElement exportedLibrary) { 4253 void set exportedLibrary(LibraryElement exportedLibrary) {
4241 _assertNotResynthesized(_unlinkedExportNonPublic); 4254 _assertNotResynthesized(_unlinkedExportNonPublic);
4242 _exportedLibrary = exportedLibrary; 4255 _exportedLibrary = exportedLibrary;
4243 } 4256 }
4244 4257
4245 @override 4258 @override
(...skipping 20 matching lines...) Expand all
4266 @override 4279 @override
4267 int get nameOffset { 4280 int get nameOffset {
4268 int offset = super.nameOffset; 4281 int offset = super.nameOffset;
4269 if (offset == 0 && _unlinkedExportNonPublic != null) { 4282 if (offset == 0 && _unlinkedExportNonPublic != null) {
4270 return _unlinkedExportNonPublic.offset; 4283 return _unlinkedExportNonPublic.offset;
4271 } 4284 }
4272 return offset; 4285 return offset;
4273 } 4286 }
4274 4287
4275 @override 4288 @override
4276 String get uri {
4277 if (_unlinkedExportPublic != null) {
4278 return _selectedUri ??= _selectUri(
4279 _unlinkedExportPublic.uri, _unlinkedExportPublic.configurations);
4280 }
4281 return super.uri;
4282 }
4283
4284 @override
4285 void set uri(String uri) {
4286 _assertNotResynthesized(_unlinkedExportPublic);
4287 super.uri = uri;
4288 }
4289
4290 @override
4291 int get uriEnd {
4292 if (_unlinkedExportNonPublic != null) {
4293 return _unlinkedExportNonPublic.uriEnd;
4294 }
4295 return super.uriEnd;
4296 }
4297
4298 @override
4299 void set uriEnd(int uriEnd) {
4300 _assertNotResynthesized(_unlinkedExportNonPublic);
4301 super.uriEnd = uriEnd;
4302 }
4303
4304 @override
4305 int get uriOffset {
4306 if (_unlinkedExportNonPublic != null) {
4307 return _unlinkedExportNonPublic.uriOffset;
4308 }
4309 return super.uriOffset;
4310 }
4311
4312 @override
4313 void set uriOffset(int uriOffset) {
4314 _assertNotResynthesized(_unlinkedExportNonPublic);
4315 super.uriOffset = uriOffset;
4316 }
4317
4318 @override
4319 T accept<T>(ElementVisitor<T> visitor) => visitor.visitExportElement(this); 4289 T accept<T>(ElementVisitor<T> visitor) => visitor.visitExportElement(this);
4320 4290
4321 @override 4291 @override
4322 void appendTo(StringBuffer buffer) { 4292 void appendTo(StringBuffer buffer) {
4323 buffer.write("export "); 4293 buffer.write("export ");
4324 LibraryElementImpl.getImpl(exportedLibrary).appendTo(buffer); 4294 LibraryElementImpl.getImpl(exportedLibrary).appendTo(buffer);
4325 } 4295 }
4326 } 4296 }
4327 4297
4328 /** 4298 /**
(...skipping 1153 matching lines...) Expand 10 before | Expand all | Expand 10 after
5482 } 5452 }
5483 buffer.write(hiddenNames[i]); 5453 buffer.write(hiddenNames[i]);
5484 } 5454 }
5485 return buffer.toString(); 5455 return buffer.toString();
5486 } 5456 }
5487 } 5457 }
5488 5458
5489 /** 5459 /**
5490 * A concrete implementation of an [ImportElement]. 5460 * A concrete implementation of an [ImportElement].
5491 */ 5461 */
5492 class ImportElementImpl extends UriReferencedElementImpl 5462 class ImportElementImpl extends ElementImpl implements ImportElement {
5493 implements ImportElement {
5494 /** 5463 /**
5495 * The unlinked representation of the import in the summary. 5464 * The unlinked representation of the import in the summary.
5496 */ 5465 */
5497 final UnlinkedImport _unlinkedImport; 5466 final UnlinkedImport _unlinkedImport;
5498 5467
5499 /** 5468 /**
5500 * The index of the dependency in the `imports` list. 5469 * The index of the dependency in the `imports` list.
5501 */ 5470 */
5502 final int _linkedDependency; 5471 final int _linkedDependency;
5503 5472
(...skipping 14 matching lines...) Expand all
5518 */ 5487 */
5519 List<NamespaceCombinator> _combinators; 5488 List<NamespaceCombinator> _combinators;
5520 5489
5521 /** 5490 /**
5522 * The prefix that was specified as part of the import directive, or `null` if 5491 * The prefix that was specified as part of the import directive, or `null` if
5523 * there was no prefix specified. 5492 * there was no prefix specified.
5524 */ 5493 */
5525 PrefixElement _prefix; 5494 PrefixElement _prefix;
5526 5495
5527 /** 5496 /**
5528 * The URI that was selected based on the [context] declared variables.
5529 */
5530 String _selectedUri;
5531
5532 /**
5533 * Initialize a newly created import element at the given [offset]. 5497 * Initialize a newly created import element at the given [offset].
5534 * The offset may be `-1` if the import is synthetic. 5498 * The offset may be `-1` if the import is synthetic.
5535 */ 5499 */
5536 ImportElementImpl(int offset) 5500 ImportElementImpl(int offset)
5537 : _unlinkedImport = null, 5501 : _unlinkedImport = null,
5538 _linkedDependency = null, 5502 _linkedDependency = null,
5539 super(null, offset); 5503 super(null, offset);
5540 5504
5541 /** 5505 /**
5542 * Initialize using the given serialized information. 5506 * Initialize using the given serialized information.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
5658 } 5622 }
5659 return _prefixOffset; 5623 return _prefixOffset;
5660 } 5624 }
5661 5625
5662 void set prefixOffset(int prefixOffset) { 5626 void set prefixOffset(int prefixOffset) {
5663 _assertNotResynthesized(_unlinkedImport); 5627 _assertNotResynthesized(_unlinkedImport);
5664 _prefixOffset = prefixOffset; 5628 _prefixOffset = prefixOffset;
5665 } 5629 }
5666 5630
5667 @override 5631 @override
5668 String get uri {
5669 if (_unlinkedImport != null) {
5670 if (_unlinkedImport.isImplicit) {
5671 return null;
5672 }
5673 return _selectedUri ??=
5674 _selectUri(_unlinkedImport.uri, _unlinkedImport.configurations);
5675 }
5676 return super.uri;
5677 }
5678
5679 @override
5680 void set uri(String uri) {
5681 _assertNotResynthesized(_unlinkedImport);
5682 super.uri = uri;
5683 }
5684
5685 @override
5686 int get uriEnd {
5687 if (_unlinkedImport != null) {
5688 if (_unlinkedImport.isImplicit) {
5689 return -1;
5690 }
5691 return _unlinkedImport.uriEnd;
5692 }
5693 return super.uriEnd;
5694 }
5695
5696 @override
5697 void set uriEnd(int uriEnd) {
5698 _assertNotResynthesized(_unlinkedImport);
5699 super.uriEnd = uriEnd;
5700 }
5701
5702 @override
5703 int get uriOffset {
5704 if (_unlinkedImport != null) {
5705 if (_unlinkedImport.isImplicit) {
5706 return -1;
5707 }
5708 return _unlinkedImport.uriOffset;
5709 }
5710 return super.uriOffset;
5711 }
5712
5713 @override
5714 void set uriOffset(int uriOffset) {
5715 _assertNotResynthesized(_unlinkedImport);
5716 super.uriOffset = uriOffset;
5717 }
5718
5719 @override
5720 T accept<T>(ElementVisitor<T> visitor) => visitor.visitImportElement(this); 5632 T accept<T>(ElementVisitor<T> visitor) => visitor.visitImportElement(this);
5721 5633
5722 @override 5634 @override
5723 void appendTo(StringBuffer buffer) { 5635 void appendTo(StringBuffer buffer) {
5724 buffer.write("import "); 5636 buffer.write("import ");
5725 LibraryElementImpl.getImpl(importedLibrary).appendTo(buffer); 5637 LibraryElementImpl.getImpl(importedLibrary).appendTo(buffer);
5726 } 5638 }
5727 5639
5728 @override 5640 @override
5729 void visitChildren(ElementVisitor visitor) { 5641 void visitChildren(ElementVisitor visitor) {
(...skipping 3428 matching lines...) Expand 10 before | Expand all | Expand 10 after
9158 final List<PropertyAccessorElementImpl> implicitAccessors = 9070 final List<PropertyAccessorElementImpl> implicitAccessors =
9159 <PropertyAccessorElementImpl>[]; 9071 <PropertyAccessorElementImpl>[];
9160 9072
9161 UnitExplicitTopLevelVariables(int numberOfVariables) 9073 UnitExplicitTopLevelVariables(int numberOfVariables)
9162 : variables = numberOfVariables != 0 9074 : variables = numberOfVariables != 0
9163 ? new List<TopLevelVariableElementImpl>(numberOfVariables) 9075 ? new List<TopLevelVariableElementImpl>(numberOfVariables)
9164 : const <TopLevelVariableElementImpl>[]; 9076 : const <TopLevelVariableElementImpl>[];
9165 } 9077 }
9166 9078
9167 /** 9079 /**
9168 * A concrete implementation of a [UriReferencedElement].
9169 */
9170 abstract class UriReferencedElementImpl extends ElementImpl
9171 implements UriReferencedElement {
9172 /**
9173 * The offset of the URI in the file, or `-1` if this node is synthetic.
9174 */
9175 int _uriOffset = -1;
9176
9177 /**
9178 * The offset of the character immediately following the last character of
9179 * this node's URI, or `-1` if this node is synthetic.
9180 */
9181 int _uriEnd = -1;
9182
9183 /**
9184 * The URI that is specified by this directive.
9185 */
9186 String _uri;
9187
9188 /**
9189 * Initialize a newly created import element to have the given [name] and
9190 * [offset]. The offset may be `-1` if the element is synthetic.
9191 */
9192 UriReferencedElementImpl(String name, int offset) : super(name, offset);
9193
9194 /**
9195 * Initialize using the given serialized information.
9196 */
9197 UriReferencedElementImpl.forSerialized(ElementImpl enclosingElement)
9198 : super.forSerialized(enclosingElement);
9199
9200 /**
9201 * Return the URI that is specified by this directive.
9202 */
9203 String get uri => _uri;
9204
9205 /**
9206 * Set the URI that is specified by this directive to be the given [uri].
9207 */
9208 void set uri(String uri) {
9209 _uri = uri;
9210 }
9211
9212 /**
9213 * Return the offset of the character immediately following the last character
9214 * of this node's URI, or `-1` if this node is synthetic.
9215 */
9216 int get uriEnd => _uriEnd;
9217
9218 /**
9219 * Set the offset of the character immediately following the last character of
9220 * this node's URI to the given [offset].
9221 */
9222 void set uriEnd(int offset) {
9223 _uriEnd = offset;
9224 }
9225
9226 /**
9227 * Return the offset of the URI in the file, or `-1` if this node is synthetic .
9228 */
9229 int get uriOffset => _uriOffset;
9230
9231 /**
9232 * Set the offset of the URI in the file to the given [offset].
9233 */
9234 void set uriOffset(int offset) {
9235 _uriOffset = offset;
9236 }
9237
9238 String _selectUri(
9239 String defaultUri, List<UnlinkedConfiguration> configurations) {
9240 for (UnlinkedConfiguration configuration in configurations) {
9241 if (context.declaredVariables.get(configuration.name) ==
9242 configuration.value) {
9243 return configuration.uri;
9244 }
9245 }
9246 return defaultUri;
9247 }
9248 }
9249
9250 /**
9251 * A concrete implementation of a [VariableElement]. 9080 * A concrete implementation of a [VariableElement].
9252 */ 9081 */
9253 abstract class VariableElementImpl extends ElementImpl 9082 abstract class VariableElementImpl extends ElementImpl
9254 implements VariableElement { 9083 implements VariableElement {
9255 /** 9084 /**
9256 * The declared type of this variable. 9085 * The declared type of this variable.
9257 */ 9086 */
9258 DartType _declaredType; 9087 DartType _declaredType;
9259 9088
9260 /** 9089 /**
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
9407 9236
9408 @override 9237 @override
9409 DartObject computeConstantValue() => null; 9238 DartObject computeConstantValue() => null;
9410 9239
9411 @override 9240 @override
9412 void visitChildren(ElementVisitor visitor) { 9241 void visitChildren(ElementVisitor visitor) {
9413 super.visitChildren(visitor); 9242 super.visitChildren(visitor);
9414 _initializer?.accept(visitor); 9243 _initializer?.accept(visitor);
9415 } 9244 }
9416 } 9245 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698