lookupDeclarationMetaData method
List<Object>
lookupDeclarationMetaData(
- DeclarationMirror? declarationMirror
)
Implementation
List<Object> lookupDeclarationMetaData(DeclarationMirror? declarationMirror) {
if (declarationMirror == null) {
return _emptyDeclarationMetaData;
}
if (_cacheLookupDeclarationMetaData.containsKey(declarationMirror)) {
return _cacheLookupDeclarationMetaData[declarationMirror]!;
}
var result = declarationMirror.metadata;
final parentClassMirror = _safeGetParentClassMirror(declarationMirror);
if (parentClassMirror == null) {
return declarationMirror.metadata;
}
for (final element in [
parentClassMirror,
_safeGetSuperClassMirror(parentClassMirror),
...parentClassMirror.superinterfaces
]) {
if (element == null) {
continue;
}
final parentDeclarationMirror =
ClassInfo.fromCache(element, cachedClasses)
.getDeclarationMirror(declarationMirror.simpleName);
result = result +
(parentClassMirror.isTopLevel
? parentDeclarationMirror != null
? parentDeclarationMirror.metadata
: []
: lookupDeclarationMetaData(parentDeclarationMirror));
}
_cacheLookupDeclarationMetaData[declarationMirror] = result;
return result;
}