Source
@override
String get name {
if (_name != null) return _name;
// handle the case of an anonymous library
if (element.name == null || element.name.isEmpty) {
_name = _libraryElement.definingCompilationUnit.name;
if (_name.endsWith('.dart')) {
_name = _name.substring(0, _name.length - '.dart'.length);
}
} else {
_name = element.name;
}
// So, if the library is a system library, it's name is not
// dart:___, it's dart.___. Apparently the way to get to the dart:___
// name is to get source.encoding.
// This may be wrong or misleading, but developers expect the name
// of dart:____
var source = _libraryElement.definingCompilationUnit.source;
_name = source.isInSystemLibrary ? source.encoding : _name;
return _name;
}