Skip to content

Commit 8b97e6c

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Support for all top-level elements in getElementId().
This adds previously missed classes, which was not noticed previously because the implementation was always incomplete, and I wanted to have something runnable. I started running fine-grained dependencies over Flutter and uncovered a few holes. So, now it is time to add stricter checks and complete the list of top-level elements. Change-Id: If5e5d561817cd8e61fb7e666338355cbeca35974 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/443620 Reviewed-by: Paul Berry <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent d90b10c commit 8b97e6c

File tree

2 files changed

+510
-2
lines changed

2 files changed

+510
-2
lines changed

pkg/analyzer/lib/src/fine/manifest_context.dart

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,12 @@ extension LinkedElementFactoryExtension on LinkedElementFactory {
361361
switch (topLevelElement) {
362362
case ClassElement():
363363
topLevelItem = manifest.declaredClasses[topLevelName];
364+
case EnumElement():
365+
topLevelItem = manifest.declaredEnums[topLevelName];
366+
case ExtensionElement():
367+
topLevelItem = manifest.declaredExtensions[topLevelName];
368+
case ExtensionTypeElement():
369+
topLevelItem = manifest.declaredExtensionTypes[topLevelName];
364370
case MixinElement():
365371
topLevelItem = manifest.declaredMixins[topLevelName];
366372
case GetterElement():
@@ -369,11 +375,17 @@ extension LinkedElementFactoryExtension on LinkedElementFactory {
369375
return manifest.declaredSetters[topLevelName]?.id;
370376
case TopLevelFunctionElement():
371377
return manifest.declaredFunctions[topLevelName]?.id;
378+
case TopLevelVariableElement():
379+
return manifest.declaredVariables[topLevelName]?.id;
380+
case TypeAliasElement():
381+
return manifest.declaredTypeAliases[topLevelName]?.id;
372382
}
373383

374-
// TODO(scheglov): remove it after supporting all elements
375384
if (topLevelItem == null) {
376-
return null;
385+
throw StateError(
386+
'Missing element manifest: (${topLevelElement.runtimeType}) '
387+
'$topLevelElement in $libraryUri',
388+
);
377389
}
378390

379391
if (memberElement == null) {

0 commit comments

Comments
 (0)