Index: pkg/analyzer/test/src/dart/analysis/file_state_test.dart |
diff --git a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart |
index a97f9c3644eaccd4b48f57a2324337dbbf506bb6..8abd9d382157c42dfc2059310ec2e448a0e6a6f5 100644 |
--- a/pkg/analyzer/test/src/dart/analysis/file_state_test.dart |
+++ b/pkg/analyzer/test/src/dart/analysis/file_state_test.dart |
@@ -11,6 +11,7 @@ import 'package:analyzer/source/package_map_resolver.dart'; |
import 'package:analyzer/src/dart/analysis/byte_store.dart'; |
import 'package:analyzer/src/dart/analysis/driver.dart' show PerformanceLog; |
import 'package:analyzer/src/dart/analysis/file_state.dart'; |
+import 'package:analyzer/src/dart/analysis/top_level_declarations.dart'; |
import 'package:analyzer/src/generated/engine.dart' |
show AnalysisOptions, AnalysisOptionsImpl; |
import 'package:analyzer/src/generated/source.dart'; |
@@ -280,6 +281,44 @@ class C { |
expect(file.apiSignature, signature); |
} |
+ test_topLevelDeclarations() { |
+ String path = _p('/aaa/lib/a.dart'); |
+ provider.newFile( |
+ path, |
+ r''' |
+class C {} |
+typedef F(); |
+enum E {E1, E2} |
+void f() {} |
+var V1; |
+get V2 => null; |
+set V3(_) {} |
+get V4 => null; |
+set V4(_) {} |
+'''); |
+ FileState file = fileSystemState.getFileForPath(path); |
+ |
+ List<TopLevelDeclaration> topLevelDeclarations = file.topLevelDeclarations; |
+ |
+ void assertHas(String name, TopLevelDeclarationKind kind) { |
+ expect( |
+ topLevelDeclarations, |
+ contains(predicate( |
+ (TopLevelDeclaration t) => t.name == name && t.kind == kind))); |
+ } |
+ |
+ expect(topLevelDeclarations.map((t) => t.name), |
+ unorderedEquals(['C', 'F', 'E', 'f', 'V1', 'V2', 'V3', 'V4'])); |
+ assertHas('C', TopLevelDeclarationKind.type); |
+ assertHas('F', TopLevelDeclarationKind.type); |
+ assertHas('E', TopLevelDeclarationKind.type); |
+ assertHas('f', TopLevelDeclarationKind.function); |
+ assertHas('V1', TopLevelDeclarationKind.variable); |
+ assertHas('V2', TopLevelDeclarationKind.variable); |
+ assertHas('V3', TopLevelDeclarationKind.variable); |
+ assertHas('V4', TopLevelDeclarationKind.variable); |
+ } |
+ |
test_transitiveFiles() { |
String pa = _p('/aaa/lib/a.dart'); |
String pb = _p('/aaa/lib/b.dart'); |