mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 14:51:30 +00:00
Analyzer: override element
type in ExportDirective and ImportDirective
This reduces the number of explicit casts needed for null safety. Change-Id: I8ad0ab9cddbbe81e5fbf66b95ae4ae1cb57efebc Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/172743 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
parent
d89bc9fd9b
commit
19a96e4d5e
|
@ -341,7 +341,7 @@ class ImportElementsComputer {
|
|||
/// [importedElements]. They will match if they import the same library using
|
||||
/// the same prefix.
|
||||
bool _matches(ImportDirective import, ImportedElements importedElements) {
|
||||
var library = (import.element as ImportElement).importedLibrary;
|
||||
var library = import.element.importedLibrary;
|
||||
return library != null &&
|
||||
library.source.fullName == importedElements.path &&
|
||||
(import.prefix?.name ?? '') == importedElements.prefix;
|
||||
|
|
|
@ -30,7 +30,7 @@ class ImportAddShow extends CorrectionProducer {
|
|||
return;
|
||||
}
|
||||
// prepare whole import namespace
|
||||
ImportElement importElement = importDirective.element;
|
||||
var importElement = importDirective.element;
|
||||
if (importElement == null) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1978,7 +1978,10 @@ abstract class EnumDeclaration implements NamedCompilationUnitMember {
|
|||
/// [Annotation] 'export' [StringLiteral] [Combinator]* ';'
|
||||
///
|
||||
/// Clients may not extend, implement or mix-in this class.
|
||||
abstract class ExportDirective implements NamespaceDirective {}
|
||||
abstract class ExportDirective implements NamespaceDirective {
|
||||
@override
|
||||
ExportElement get element;
|
||||
}
|
||||
|
||||
/// A node that represents an expression.
|
||||
///
|
||||
|
@ -3223,6 +3226,9 @@ abstract class ImportDirective implements NamespaceDirective {
|
|||
/// Set the token representing the 'deferred' keyword to the given [token].
|
||||
set deferredKeyword(Token token);
|
||||
|
||||
@override
|
||||
ImportElement get element;
|
||||
|
||||
/// Return the prefix to be used with the imported names, or `null` if the
|
||||
/// imported names are not prefixed.
|
||||
SimpleIdentifier get prefix;
|
||||
|
|
|
@ -928,7 +928,7 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
|
|||
return;
|
||||
}
|
||||
|
||||
var importElement = node.element as ImportElement;
|
||||
var importElement = node.element;
|
||||
var importedLibrary = importElement.importedLibrary;
|
||||
if (importedLibrary == null || importedLibrary.isNonNullableByDefault) {
|
||||
return;
|
||||
|
|
|
@ -569,7 +569,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
|
|||
|
||||
@override
|
||||
void visitExportDirective(ExportDirective node) {
|
||||
var exportElement = node.element as ExportElement;
|
||||
var exportElement = node.element;
|
||||
if (exportElement != null) {
|
||||
LibraryElement exportedLibrary = exportElement.exportedLibrary;
|
||||
_checkForAmbiguousExport(node, exportElement, exportedLibrary);
|
||||
|
@ -824,7 +824,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
|
|||
|
||||
@override
|
||||
void visitImportDirective(ImportDirective node) {
|
||||
var importElement = node.element as ImportElement;
|
||||
var importElement = node.element;
|
||||
if (node.prefix != null) {
|
||||
_checkForBuiltInIdentifierAsName(
|
||||
node.prefix, CompileTimeErrorCode.BUILT_IN_IDENTIFIER_AS_PREFIX_NAME);
|
||||
|
@ -2410,7 +2410,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void> {
|
|||
return;
|
||||
}
|
||||
|
||||
var element = node.element as ExportElement;
|
||||
var element = node.element;
|
||||
// TODO(scheglov) Expose from ExportElement.
|
||||
var namespace =
|
||||
NamespaceBuilder().createExportNamespaceForDirective(element);
|
||||
|
|
|
@ -3325,7 +3325,7 @@ var v = 0
|
|||
|
||||
ImportElement _getImportElement(CompilationUnit unit, int directiveIndex) {
|
||||
var import = unit.directives[directiveIndex] as ImportDirective;
|
||||
return import.element as ImportElement;
|
||||
return import.element;
|
||||
}
|
||||
|
||||
Source _getImportSource(CompilationUnit unit, int directiveIndex) {
|
||||
|
|
|
@ -277,7 +277,7 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor<void> {
|
|||
|
||||
@override
|
||||
void visitExportDirective(ExportDirective node) {
|
||||
var exportElement = node.element as ExportElement;
|
||||
var exportElement = node.element;
|
||||
if (exportElement != null) {
|
||||
Element libraryElement = exportElement.exportedLibrary;
|
||||
_addUriDirectiveRegion(node, libraryElement);
|
||||
|
@ -287,7 +287,7 @@ class _DartNavigationComputerVisitor extends RecursiveAstVisitor<void> {
|
|||
|
||||
@override
|
||||
void visitImportDirective(ImportDirective node) {
|
||||
var importElement = node.element as ImportElement;
|
||||
var importElement = node.element;
|
||||
if (importElement != null) {
|
||||
Element libraryElement = importElement.importedLibrary;
|
||||
_addUriDirectiveRegion(node, libraryElement);
|
||||
|
|
Loading…
Reference in a new issue