Index: pkg/analyzer/lib/src/generated/declaration_resolver.dart |
diff --git a/pkg/analyzer/lib/src/generated/declaration_resolver.dart b/pkg/analyzer/lib/src/generated/declaration_resolver.dart |
index d67bc4c02fed6bfa911fa18ea90dd0b41c59bd12..4b16bfca969d98d4aa511248f9975fd55e481494 100644 |
--- a/pkg/analyzer/lib/src/generated/declaration_resolver.dart |
+++ b/pkg/analyzer/lib/src/generated/declaration_resolver.dart |
@@ -9,7 +9,9 @@ import 'package:analyzer/dart/ast/token.dart'; |
import 'package:analyzer/dart/ast/visitor.dart'; |
import 'package:analyzer/dart/element/element.dart'; |
import 'package:analyzer/exception/exception.dart'; |
+import 'package:analyzer/src/dart/element/builder.dart'; |
import 'package:analyzer/src/dart/element/element.dart'; |
+import 'package:analyzer/src/generated/resolver.dart'; |
/** |
* A visitor that resolves declarations in an AST structure to already built |
@@ -51,6 +53,17 @@ class DeclarationResolver extends RecursiveAstVisitor<Object> { |
} |
@override |
+ Object visitAnnotation(Annotation node) { |
+ // Annotations can only contain elements in certain erroneous situations, |
+ // in which case the elements are disconnected from the rest of the element |
+ // model, thus we can't reconnect to them. To avoid crashes, just create |
+ // fresh elements. |
+ ElementHolder elementHolder = new ElementHolder(); |
+ new ElementBuilder(elementHolder, _enclosingUnit).visitAnnotation(node); |
+ return null; |
+ } |
+ |
+ @override |
Object visitCatchClause(CatchClause node) { |
SimpleIdentifier exceptionParameter = node.exceptionParameter; |
if (exceptionParameter != null) { |