Chromium Code Reviews| Index: pkg/analyzer/lib/src/generated/incremental_resolver.dart |
| diff --git a/pkg/analyzer/lib/src/generated/incremental_resolver.dart b/pkg/analyzer/lib/src/generated/incremental_resolver.dart |
| index a80de5275af42959d24068e1bde96f922a93039a..a8a17925040b9b1a477e975f36848731b9d82dbf 100644 |
| --- a/pkg/analyzer/lib/src/generated/incremental_resolver.dart |
| +++ b/pkg/analyzer/lib/src/generated/incremental_resolver.dart |
| @@ -1117,7 +1117,8 @@ class IncrementalResolver { |
| * |
| * [node] - the node being tested. |
| */ |
| - bool _canBeResolved(AstNode node) => node is ClassDeclaration || |
| + bool _canBeResolved(AstNode node) => |
| + node is ClassDeclaration || |
| node is ClassTypeAlias || |
| node is CompilationUnit || |
| node is ConstructorDeclaration || |
| @@ -1269,7 +1270,7 @@ class IncrementalResolver { |
| LoggingTimer timer = logger.startTimer(); |
| try { |
| _definingUnit |
| - .accept(new _ElementNameOffsetUpdater(_updateOffset, _updateDelta)); |
| + .accept(new _ElementOffsetUpdater(_updateOffset, _updateDelta)); |
| _definingUnit.afterIncrementalResolution(); |
| } finally { |
| timer.stop('update element offsets'); |
| @@ -1987,18 +1988,34 @@ class ResolutionContextBuilder { |
| */ |
| class _DeclarationMismatchException {} |
| -class _ElementNameOffsetUpdater extends GeneralizingElementVisitor { |
| +class _ElementOffsetUpdater extends GeneralizingElementVisitor { |
| final int updateOffset; |
| final int updateDelta; |
| - _ElementNameOffsetUpdater(this.updateOffset, this.updateDelta); |
| + _ElementOffsetUpdater(this.updateOffset, this.updateDelta); |
| @override |
| visitElement(Element element) { |
| + // name offset |
| int nameOffset = element.nameOffset; |
| if (nameOffset > updateOffset) { |
| (element as ElementImpl).nameOffset = nameOffset + updateDelta; |
| } |
| + // visible range |
| + if (element is LocalElement) { |
| + SourceRange visibleRange = element.visibleRange; |
| + if (visibleRange != null && visibleRange.offset > updateOffset) { |
| + int newOffset = visibleRange.offset + updateDelta; |
| + int length = visibleRange.length; |
| + if (element is FunctionElementImpl) { |
|
Brian Wilkerson
2015/12/12 15:31:56
I want to make a couple of changes to the element
|
| + element.setVisibleRange(newOffset, length); |
| + } else if (element is LocalVariableElementImpl) { |
| + element.setVisibleRange(newOffset, length); |
| + } else if (element is ParameterElementImpl) { |
| + element.setVisibleRange(newOffset, length); |
| + } |
| + } |
| + } |
| super.visitElement(element); |
| } |
| } |