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

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

Issue 2001903002: Make imports resynthesizing completely lazy. (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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/resynthesize.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) 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 3574 matching lines...) Expand 10 before | Expand all | Expand 10 after
3585 safelyVisitChildren(_parameters, visitor); 3585 safelyVisitChildren(_parameters, visitor);
3586 safelyVisitChildren(_typeParameters, visitor); 3586 safelyVisitChildren(_typeParameters, visitor);
3587 } 3587 }
3588 } 3588 }
3589 3589
3590 /** 3590 /**
3591 * A concrete implementation of a [HideElementCombinator]. 3591 * A concrete implementation of a [HideElementCombinator].
3592 */ 3592 */
3593 class HideElementCombinatorImpl implements HideElementCombinator { 3593 class HideElementCombinatorImpl implements HideElementCombinator {
3594 /** 3594 /**
3595 * The unlinked representation of the combinator in the summary.
3596 */
3597 final UnlinkedCombinator _unlinkedCombinator;
3598
3599 /**
3595 * The names that are not to be made visible in the importing library even if 3600 * The names that are not to be made visible in the importing library even if
3596 * they are defined in the imported library. 3601 * they are defined in the imported library.
3597 */ 3602 */
3598 List<String> hiddenNames = StringUtilities.EMPTY_ARRAY; 3603 List<String> _hiddenNames;
3604
3605 HideElementCombinatorImpl() : _unlinkedCombinator = null;
3606
3607 /**
3608 * Initialize using the given serialized information.
3609 */
3610 HideElementCombinatorImpl.forSerialized(this._unlinkedCombinator);
3611
3612 @override
3613 List<String> get hiddenNames {
3614 if (_unlinkedCombinator != null) {
3615 _hiddenNames ??= _unlinkedCombinator.hides.toList(growable: false);
3616 }
3617 return _hiddenNames ?? StringUtilities.EMPTY_ARRAY;
Paul Berry 2016/05/23 15:43:52 Nit: personally, I'd use `const <String>[]` here.
scheglov 2016/05/23 15:48:42 Done.
3618 }
3619
3620 void set hiddenNames(List<String> hiddenNames) {
3621 assert(_unlinkedCombinator == null);
3622 _hiddenNames = hiddenNames;
3623 }
3599 3624
3600 @override 3625 @override
3601 String toString() { 3626 String toString() {
3602 StringBuffer buffer = new StringBuffer(); 3627 StringBuffer buffer = new StringBuffer();
3603 buffer.write("show "); 3628 buffer.write("show ");
3604 int count = hiddenNames.length; 3629 int count = hiddenNames.length;
3605 for (int i = 0; i < count; i++) { 3630 for (int i = 0; i < count; i++) {
3606 if (i > 0) { 3631 if (i > 0) {
3607 buffer.write(", "); 3632 buffer.write(", ");
3608 } 3633 }
(...skipping 26 matching lines...) Expand all
3635 3660
3636 /** 3661 /**
3637 * The library that is imported into this library by this import directive. 3662 * The library that is imported into this library by this import directive.
3638 */ 3663 */
3639 LibraryElement _importedLibrary; 3664 LibraryElement _importedLibrary;
3640 3665
3641 /** 3666 /**
3642 * The combinators that were specified as part of the import directive in the 3667 * The combinators that were specified as part of the import directive in the
3643 * order in which they were specified. 3668 * order in which they were specified.
3644 */ 3669 */
3645 List<NamespaceCombinator> combinators = NamespaceCombinator.EMPTY_LIST; 3670 List<NamespaceCombinator> _combinators;
3646 3671
3647 /** 3672 /**
3648 * The prefix that was specified as part of the import directive, or `null` if 3673 * The prefix that was specified as part of the import directive, or `null` if
3649 * there was no prefix specified. 3674 * there was no prefix specified.
3650 */ 3675 */
3651 PrefixElement _prefix; 3676 PrefixElement _prefix;
3652 3677
3653 /** 3678 /**
3654 * Initialize a newly created import element at the given [offset]. 3679 * Initialize a newly created import element at the given [offset].
3655 * The offset may be `-1` if the import is synthetic. 3680 * The offset may be `-1` if the import is synthetic.
3656 */ 3681 */
3657 ImportElementImpl(int offset) 3682 ImportElementImpl(int offset)
3658 : _unlinkedImport = null, 3683 : _unlinkedImport = null,
3659 _linkedDependency = null, 3684 _linkedDependency = null,
3660 super(null, offset); 3685 super(null, offset);
3661 3686
3662 /** 3687 /**
3663 * Initialize using the given serialized information. 3688 * Initialize using the given serialized information.
3664 */ 3689 */
3665 ImportElementImpl.forSerialized(this._unlinkedImport, this._linkedDependency, 3690 ImportElementImpl.forSerialized(this._unlinkedImport, this._linkedDependency,
3666 LibraryElementImpl enclosingLibrary) 3691 LibraryElementImpl enclosingLibrary)
3667 : super.forSerialized(enclosingLibrary); 3692 : super.forSerialized(enclosingLibrary);
3668 3693
3694 @override
3695 List<NamespaceCombinator> get combinators {
3696 if (_unlinkedImport != null && _combinators == null) {
3697 List<UnlinkedCombinator> unlinkedCombinators =
3698 _unlinkedImport.combinators;
3699 int length = unlinkedCombinators.length;
3700 if (length != 0) {
3701 List<NamespaceCombinator> combinators =
3702 new List<NamespaceCombinator>(length);
3703 for (int i = 0; i < length; i++) {
3704 UnlinkedCombinator unlinkedCombinator = unlinkedCombinators[i];
3705 combinators[i] = unlinkedCombinator.shows.isNotEmpty
3706 ? new ShowElementCombinatorImpl.forSerialized(unlinkedCombinator)
3707 : new HideElementCombinatorImpl.forSerialized(unlinkedCombinator);
3708 }
3709 _combinators = combinators;
3710 } else {
3711 _combinators = const <NamespaceCombinator>[];
3712 }
3713 }
3714 return _combinators ?? const <NamespaceCombinator>[];
3715 }
3716
3717 void set combinators(List<NamespaceCombinator> combinators) {
3718 assert(_unlinkedImport == null);
3719 _combinators = combinators;
3720 }
3721
3669 /** 3722 /**
3670 * Set whether this import is for a deferred library. 3723 * Set whether this import is for a deferred library.
3671 */ 3724 */
3672 void set deferred(bool isDeferred) { 3725 void set deferred(bool isDeferred) {
3673 assert(_unlinkedImport == null); 3726 assert(_unlinkedImport == null);
3674 setModifier(Modifier.DEFERRED, isDeferred); 3727 setModifier(Modifier.DEFERRED, isDeferred);
3675 } 3728 }
3676 3729
3677 @override 3730 @override
3678 String get identifier => "${importedLibrary.identifier}@$nameOffset"; 3731 String get identifier => "${importedLibrary.identifier}@$nameOffset";
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
3924 /** 3977 /**
3925 * The entry point for this library, or `null` if this library does not have 3978 * The entry point for this library, or `null` if this library does not have
3926 * an entry point. 3979 * an entry point.
3927 */ 3980 */
3928 FunctionElement _entryPoint; 3981 FunctionElement _entryPoint;
3929 3982
3930 /** 3983 /**
3931 * A list containing specifications of all of the imports defined in this 3984 * A list containing specifications of all of the imports defined in this
3932 * library. 3985 * library.
3933 */ 3986 */
3934 List<ImportElement> _imports = ImportElement.EMPTY_LIST; 3987 List<ImportElement> _imports;
3935 3988
3936 /** 3989 /**
3937 * A list containing specifications of all of the exports defined in this 3990 * A list containing specifications of all of the exports defined in this
3938 * library. 3991 * library.
3939 */ 3992 */
3940 List<ExportElement> _exports = ExportElement.EMPTY_LIST; 3993 List<ExportElement> _exports = ExportElement.EMPTY_LIST;
3941 3994
3942 /** 3995 /**
3943 * A list containing the strongly connected component in the import/export 3996 * A list containing the strongly connected component in the import/export
3944 * graph in which the current library resides. Computed on demand, null 3997 * graph in which the current library resides. Computed on demand, null
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
4127 } 4180 }
4128 return false; 4181 return false;
4129 } 4182 }
4130 4183
4131 @override 4184 @override
4132 String get identifier => _definingCompilationUnit.source.encoding; 4185 String get identifier => _definingCompilationUnit.source.encoding;
4133 4186
4134 @override 4187 @override
4135 List<LibraryElement> get importedLibraries { 4188 List<LibraryElement> get importedLibraries {
4136 HashSet<LibraryElement> libraries = new HashSet<LibraryElement>(); 4189 HashSet<LibraryElement> libraries = new HashSet<LibraryElement>();
4137 for (ImportElement element in _imports) { 4190 for (ImportElement element in imports) {
4138 LibraryElement library = element.importedLibrary; 4191 LibraryElement library = element.importedLibrary;
4139 if (library != null) { 4192 if (library != null) {
4140 libraries.add(library); 4193 libraries.add(library);
4141 } 4194 }
4142 } 4195 }
4143 return new List.from(libraries); 4196 return new List.from(libraries);
4144 } 4197 }
4145 4198
4146 @override 4199 @override
4147 List<ImportElement> get imports => _imports; 4200 List<ImportElement> get imports {
4201 if (_unlinkedDefiningUnit != null && _imports == null) {
4202 List<UnlinkedImport> unlinkedImports = _unlinkedDefiningUnit.imports;
4203 int length = unlinkedImports.length;
4204 if (length != 0) {
4205 List<ImportElement> imports = new List<ImportElement>(length);
4206 LinkedLibrary linkedLibrary = resynthesizerContext.linkedLibrary;
4207 for (int i = 0; i < length; i++) {
4208 imports[i] = new ImportElementImpl.forSerialized(
4209 unlinkedImports[i], linkedLibrary.importDependencies[i], library);
4210 }
4211 _imports = imports;
4212 } else {
4213 _imports = const <ImportElement>[];
4214 }
4215 }
4216 return _imports ?? ImportElement.EMPTY_LIST;
4217 }
4148 4218
4149 /** 4219 /**
4150 * Set the specifications of all of the imports defined in this library to the 4220 * Set the specifications of all of the imports defined in this library to the
4151 * given list of [imports]. 4221 * given list of [imports].
4152 */ 4222 */
4153 void set imports(List<ImportElement> imports) { 4223 void set imports(List<ImportElement> imports) {
4224 assert(_unlinkedDefiningUnit == null);
4154 for (ImportElement importElement in imports) { 4225 for (ImportElement importElement in imports) {
4155 (importElement as ImportElementImpl).enclosingElement = this; 4226 (importElement as ImportElementImpl).enclosingElement = this;
4156 PrefixElementImpl prefix = importElement.prefix as PrefixElementImpl; 4227 PrefixElementImpl prefix = importElement.prefix as PrefixElementImpl;
4157 if (prefix != null) { 4228 if (prefix != null) {
4158 prefix.enclosingElement = this; 4229 prefix.enclosingElement = this;
4159 } 4230 }
4160 } 4231 }
4161 this._imports = imports; 4232 this._imports = imports;
4162 } 4233 }
4163 4234
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
4325 assert((compilationUnit as CompilationUnitElementImpl).librarySource == 4396 assert((compilationUnit as CompilationUnitElementImpl).librarySource ==
4326 source); 4397 source);
4327 (compilationUnit as CompilationUnitElementImpl).enclosingElement = this; 4398 (compilationUnit as CompilationUnitElementImpl).enclosingElement = this;
4328 } 4399 }
4329 this._parts = parts; 4400 this._parts = parts;
4330 } 4401 }
4331 4402
4332 @override 4403 @override
4333 List<PrefixElement> get prefixes { 4404 List<PrefixElement> get prefixes {
4334 HashSet<PrefixElement> prefixes = new HashSet<PrefixElement>(); 4405 HashSet<PrefixElement> prefixes = new HashSet<PrefixElement>();
4335 for (ImportElement element in _imports) { 4406 for (ImportElement element in imports) {
4336 PrefixElement prefix = element.prefix; 4407 PrefixElement prefix = element.prefix;
4337 if (prefix != null) { 4408 if (prefix != null) {
4338 prefixes.add(prefix); 4409 prefixes.add(prefix);
4339 } 4410 }
4340 } 4411 }
4341 return new List.from(prefixes); 4412 return new List.from(prefixes);
4342 } 4413 }
4343 4414
4344 @override 4415 @override
4345 Namespace get publicNamespace { 4416 Namespace get publicNamespace {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
4398 CompilationUnitElementImpl unitImpl = _definingCompilationUnit; 4469 CompilationUnitElementImpl unitImpl = _definingCompilationUnit;
4399 if (unitImpl.identifier == identifier) { 4470 if (unitImpl.identifier == identifier) {
4400 return unitImpl; 4471 return unitImpl;
4401 } 4472 }
4402 for (CompilationUnitElement part in _parts) { 4473 for (CompilationUnitElement part in _parts) {
4403 CompilationUnitElementImpl partImpl = part; 4474 CompilationUnitElementImpl partImpl = part;
4404 if (partImpl.identifier == identifier) { 4475 if (partImpl.identifier == identifier) {
4405 return partImpl; 4476 return partImpl;
4406 } 4477 }
4407 } 4478 }
4408 for (ImportElement importElement in _imports) { 4479 for (ImportElement importElement in imports) {
4409 ImportElementImpl importElementImpl = importElement; 4480 ImportElementImpl importElementImpl = importElement;
4410 if (importElementImpl.identifier == identifier) { 4481 if (importElementImpl.identifier == identifier) {
4411 return importElementImpl; 4482 return importElementImpl;
4412 } 4483 }
4413 } 4484 }
4414 for (ExportElement exportElement in _exports) { 4485 for (ExportElement exportElement in _exports) {
4415 ExportElementImpl exportElementImpl = exportElement; 4486 ExportElementImpl exportElementImpl = exportElement;
4416 if (exportElementImpl.identifier == identifier) { 4487 if (exportElementImpl.identifier == identifier) {
4417 return exportElementImpl; 4488 return exportElementImpl;
4418 } 4489 }
4419 } 4490 }
4420 return null; 4491 return null;
4421 } 4492 }
4422 4493
4423 @override 4494 @override
4424 List<ImportElement> getImportsWithPrefix(PrefixElement prefixElement) { 4495 List<ImportElement> getImportsWithPrefix(PrefixElement prefixElement) {
4425 int count = _imports.length; 4496 var imports = this.imports;
4497 int count = imports.length;
4426 List<ImportElement> importList = new List<ImportElement>(); 4498 List<ImportElement> importList = new List<ImportElement>();
4427 for (int i = 0; i < count; i++) { 4499 for (int i = 0; i < count; i++) {
4428 if (identical(_imports[i].prefix, prefixElement)) { 4500 if (identical(imports[i].prefix, prefixElement)) {
4429 importList.add(_imports[i]); 4501 importList.add(imports[i]);
4430 } 4502 }
4431 } 4503 }
4432 return importList; 4504 return importList;
4433 } 4505 }
4434 4506
4435 @override 4507 @override
4436 ClassElement getType(String className) { 4508 ClassElement getType(String className) {
4437 ClassElement type = _definingCompilationUnit.getType(className); 4509 ClassElement type = _definingCompilationUnit.getType(className);
4438 if (type != null) { 4510 if (type != null) {
4439 return type; 4511 return type;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
4505 bool isUpToDate(int timeStamp) { 4577 bool isUpToDate(int timeStamp) {
4506 Set<LibraryElement> visitedLibraries = new Set(); 4578 Set<LibraryElement> visitedLibraries = new Set();
4507 return _safeIsUpToDate(this, timeStamp, visitedLibraries); 4579 return _safeIsUpToDate(this, timeStamp, visitedLibraries);
4508 } 4580 }
4509 4581
4510 @override 4582 @override
4511 void visitChildren(ElementVisitor visitor) { 4583 void visitChildren(ElementVisitor visitor) {
4512 super.visitChildren(visitor); 4584 super.visitChildren(visitor);
4513 _definingCompilationUnit?.accept(visitor); 4585 _definingCompilationUnit?.accept(visitor);
4514 safelyVisitChildren(_exports, visitor); 4586 safelyVisitChildren(_exports, visitor);
4515 safelyVisitChildren(_imports, visitor); 4587 safelyVisitChildren(imports, visitor);
4516 safelyVisitChildren(_parts, visitor); 4588 safelyVisitChildren(_parts, visitor);
4517 } 4589 }
4518 4590
4519 /** 4591 /**
4520 * Recursively fills set of visible libraries for 4592 * Recursively fills set of visible libraries for
4521 * [getVisibleElementsLibraries]. 4593 * [getVisibleElementsLibraries].
4522 */ 4594 */
4523 void _addVisibleLibraries( 4595 void _addVisibleLibraries(
4524 Set<LibraryElement> visibleLibraries, bool includeExports) { 4596 Set<LibraryElement> visibleLibraries, bool includeExports) {
4525 // maybe already processed 4597 // maybe already processed
4526 if (!visibleLibraries.add(this)) { 4598 if (!visibleLibraries.add(this)) {
4527 return; 4599 return;
4528 } 4600 }
4529 // add imported libraries 4601 // add imported libraries
4530 for (ImportElement importElement in _imports) { 4602 for (ImportElement importElement in imports) {
4531 LibraryElement importedLibrary = importElement.importedLibrary; 4603 LibraryElement importedLibrary = importElement.importedLibrary;
4532 if (importedLibrary != null) { 4604 if (importedLibrary != null) {
4533 (importedLibrary as LibraryElementImpl) 4605 (importedLibrary as LibraryElementImpl)
4534 ._addVisibleLibraries(visibleLibraries, true); 4606 ._addVisibleLibraries(visibleLibraries, true);
4535 } 4607 }
4536 } 4608 }
4537 // add exported libraries 4609 // add exported libraries
4538 if (includeExports) { 4610 if (includeExports) {
4539 for (ExportElement exportElement in _exports) { 4611 for (ExportElement exportElement in _exports) {
4540 LibraryElement exportedLibrary = exportElement.exportedLibrary; 4612 LibraryElement exportedLibrary = exportElement.exportedLibrary;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
4583 } 4655 }
4584 return true; 4656 return true;
4585 } 4657 }
4586 } 4658 }
4587 4659
4588 /** 4660 /**
4589 * The context in which the library is resynthesized. 4661 * The context in which the library is resynthesized.
4590 */ 4662 */
4591 abstract class LibraryResynthesizerContext { 4663 abstract class LibraryResynthesizerContext {
4592 /** 4664 /**
4665 * Return the [LinkedLibrary] that corresponds to the library being
4666 * resynthesized.
4667 */
4668 LinkedLibrary get linkedLibrary;
4669
4670 /**
4593 * Return the export namespace of the library. 4671 * Return the export namespace of the library.
4594 */ 4672 */
4595 Namespace buildExportNamespace(); 4673 Namespace buildExportNamespace();
4596 4674
4597 LibraryElement buildImportedLibrary(int dependency); 4675 LibraryElement buildImportedLibrary(int dependency);
4598 4676
4599 /** 4677 /**
4600 * Return the public namespace of the library. 4678 * Return the public namespace of the library.
4601 */ 4679 */
4602 Namespace buildPublicNamespace(); 4680 Namespace buildPublicNamespace();
(...skipping 1393 matching lines...) Expand 10 before | Expand all | Expand 10 after
5996 DartType resolveTypeRef( 6074 DartType resolveTypeRef(
5997 EntityRef type, TypeParameterizedElementMixin typeParameterContext, 6075 EntityRef type, TypeParameterizedElementMixin typeParameterContext,
5998 {bool defaultVoid: false, bool instantiateToBoundsAllowed: true}); 6076 {bool defaultVoid: false, bool instantiateToBoundsAllowed: true});
5999 } 6077 }
6000 6078
6001 /** 6079 /**
6002 * A concrete implementation of a [ShowElementCombinator]. 6080 * A concrete implementation of a [ShowElementCombinator].
6003 */ 6081 */
6004 class ShowElementCombinatorImpl implements ShowElementCombinator { 6082 class ShowElementCombinatorImpl implements ShowElementCombinator {
6005 /** 6083 /**
6084 * The unlinked representation of the combinator in the summary.
6085 */
6086 final UnlinkedCombinator _unlinkedCombinator;
6087
6088 /**
6006 * The names that are to be made visible in the importing library if they are 6089 * The names that are to be made visible in the importing library if they are
6007 * defined in the imported library. 6090 * defined in the imported library.
6008 */ 6091 */
6009 List<String> shownNames = StringUtilities.EMPTY_ARRAY; 6092 List<String> _shownNames;
6010 6093
6011 /** 6094 /**
6012 * The offset of the character immediately following the last character of 6095 * The offset of the character immediately following the last character of
6013 * this node. 6096 * this node.
6014 */ 6097 */
6015 int end = -1; 6098 int _end = -1;
6016 6099
6017 /** 6100 /**
6018 * The offset of the 'show' keyword of this element. 6101 * The offset of the 'show' keyword of this element.
6019 */ 6102 */
6020 int offset = 0; 6103 int _offset = 0;
6104
6105 ShowElementCombinatorImpl() : _unlinkedCombinator = null;
6106
6107 /**
6108 * Initialize using the given serialized information.
6109 */
6110 ShowElementCombinatorImpl.forSerialized(this._unlinkedCombinator);
6111
6112 @override
6113 int get end {
6114 if (_unlinkedCombinator != null) {
6115 return _unlinkedCombinator.end;
6116 }
6117 return _end;
6118 }
6119
6120 void set end(int end) {
6121 assert(_unlinkedCombinator == null);
6122 _end = end;
6123 }
6124
6125 @override
6126 int get offset {
6127 if (_unlinkedCombinator != null) {
6128 return _unlinkedCombinator.offset;
6129 }
6130 return _offset;
6131 }
6132
6133 void set offset(int offset) {
6134 assert(_unlinkedCombinator == null);
6135 _offset = offset;
6136 }
6137
6138 @override
6139 List<String> get shownNames {
6140 if (_unlinkedCombinator != null) {
6141 _shownNames ??= _unlinkedCombinator.shows.toList(growable: false);
6142 }
6143 return _shownNames ?? StringUtilities.EMPTY_ARRAY;
6144 }
6145
6146 void set shownNames(List<String> shownNames) {
6147 assert(_unlinkedCombinator == null);
6148 _shownNames = shownNames;
6149 }
6021 6150
6022 @override 6151 @override
6023 String toString() { 6152 String toString() {
6024 StringBuffer buffer = new StringBuffer(); 6153 StringBuffer buffer = new StringBuffer();
6025 buffer.write("show "); 6154 buffer.write("show ");
6026 int count = shownNames.length; 6155 int count = shownNames.length;
6027 for (int i = 0; i < count; i++) { 6156 for (int i = 0; i < count; i++) {
6028 if (i > 0) { 6157 if (i > 0) {
6029 buffer.write(", "); 6158 buffer.write(", ");
6030 } 6159 }
(...skipping 516 matching lines...) Expand 10 before | Expand all | Expand 10 after
6547 6676
6548 @override 6677 @override
6549 void visitElement(Element element) { 6678 void visitElement(Element element) {
6550 int offset = element.nameOffset; 6679 int offset = element.nameOffset;
6551 if (offset != -1) { 6680 if (offset != -1) {
6552 map[offset] = element; 6681 map[offset] = element;
6553 } 6682 }
6554 super.visitElement(element); 6683 super.visitElement(element);
6555 } 6684 }
6556 } 6685 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698