Index: pkg/analyzer/test/generated/declaration_resolver_test.dart |
diff --git a/pkg/analyzer/test/generated/declaration_resolver_test.dart b/pkg/analyzer/test/generated/declaration_resolver_test.dart |
index 74232ac7fe5404d111812d73fe3e78a3e8b147fc..32927b0d630076e8f208321748aa9745ee3bbe96 100644 |
--- a/pkg/analyzer/test/generated/declaration_resolver_test.dart |
+++ b/pkg/analyzer/test/generated/declaration_resolver_test.dart |
@@ -8,6 +8,7 @@ import 'package:analyzer/dart/ast/ast.dart'; |
import 'package:analyzer/dart/element/element.dart'; |
import 'package:analyzer/src/dart/ast/ast.dart'; |
import 'package:analyzer/src/dart/ast/utilities.dart'; |
+import 'package:analyzer/src/dart/element/element.dart'; |
import 'package:analyzer/src/generated/declaration_resolver.dart'; |
import 'package:analyzer/src/generated/engine.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
@@ -167,6 +168,20 @@ class DeclarationResolverMetadataTest extends ResolverTestCase { |
checkMetadata('L'); |
} |
+ void test_metadata_libraryDirective_resynthesized() { |
+ CompilationUnit unit = resolveSource('@a library L; const a = null;'); |
+ expect(unit.directives.single.metadata.single.name.name, 'a'); |
+ var unitElement = unit.element as CompilationUnitElementImpl; |
+ // Damage the unit element - as if "setAnnotations" were not called. |
+ // The LibraryElement still has the metadata, we should use it. |
+ unitElement.setAnnotations(unit.directives.single.offset, []); |
+ expect(unitElement.library.metadata, hasLength(1)); |
+ // DeclarationResolver on the clone should succeed. |
+ CompilationUnit clonedUnit = AstCloner.clone(unit); |
+ new DeclarationResolver().resolve(clonedUnit, unit.element); |
+ expect(clonedUnit.directives.single.metadata.single.name.name, 'a'); |
+ } |
+ |
void test_metadata_localFunctionDeclaration() { |
setupCode('f() { @a g() {} }'); |
// Note: metadata on local function declarations is ignored by the |