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); |
} |
} |