Elements. Make InterfaceElement2.name nullable.
Change-Id: I7dbbc3197507da2e8f5642e142e994583f5c0c10
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/390781
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Phil Quitslund <pquitslund@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
index 8b38016..6d673f6 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_enum_like_case_clauses.dart
@@ -35,6 +35,10 @@
}
var classElement = expressionType.element3;
var className = classElement.name;
+ if (className == null) {
+ return;
+ }
+
var caseNames = _caseNames(node);
var missingNames = _constantNames(classElement)
..removeWhere((e) => caseNames.contains(e));
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart b/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
index ce1ad27..5c43d5e 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/change_to_static_access.dart
@@ -53,12 +53,15 @@
var declaringElement = invokedElement.enclosingElement2;
if (declaringElement is InterfaceElement2) {
- _className = declaringElement.name;
- await builder.addDartFileEdit(file, (builder) {
- builder.addReplacement(range.node(target_final), (builder) {
- builder.writeReference2(declaringElement);
+ var declaringElementName = declaringElement.name;
+ if (declaringElementName != null) {
+ _className = declaringElementName;
+ await builder.addDartFileEdit(file, (builder) {
+ builder.addReplacement(range.node(target_final), (builder) {
+ builder.writeReference2(declaringElement);
+ });
});
- });
+ }
} else if (declaringElement is ExtensionElement2) {
var extensionName = declaringElement.name;
if (extensionName != null) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
index a408b47..97737c5 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/create_constructor.dart
@@ -159,9 +159,15 @@
return;
}
- // prepare target ClassDeclaration
var targetElement = constructorElement.enclosingElement2;
var targetFragment = (targetElement as ClassElement2).firstFragment;
+
+ var targetElementName = targetElement.name;
+ if (targetElementName == null) {
+ return;
+ }
+
+ // prepare target ClassDeclaration
var targetResult =
await sessionHelper.getElementDeclaration2(targetFragment);
if (targetResult == null) {
@@ -181,7 +187,7 @@
var targetFile = targetSource.fullName;
await builder.addDartFileEdit(targetFile, (builder) {
builder.insertConstructor(targetNode, (builder) {
- builder.writeConstructorDeclaration(targetElement.name,
+ builder.writeConstructorDeclaration(targetElementName,
argumentList: instanceCreation.argumentList);
});
});
diff --git a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
index bfa431e..bb3157a 100644
--- a/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
+++ b/pkg/analysis_server/lib/src/services/correction/name_suggestion.dart
@@ -68,7 +68,9 @@
_addSingleCharacterName(excluded, res, 0x73);
} else if (expectedType is InterfaceType) {
var className = expectedType.element3.name;
- _addAll(excluded, res, getCamelWordCombinations(className));
+ if (className != null) {
+ _addAll(excluded, res, getCamelWordCombinations(className));
+ }
}
}
// done
diff --git a/pkg/analyzer/lib/dart/element/element2.dart b/pkg/analyzer/lib/dart/element/element2.dart
index 6e732fe..a1c67f0 100644
--- a/pkg/analyzer/lib/dart/element/element2.dart
+++ b/pkg/analyzer/lib/dart/element/element2.dart
@@ -1125,9 +1125,6 @@
/// guard against infinite loops.
List<InterfaceType> get mixins;
- @override
- String get name;
-
/// The superclass of this element.
///
/// For [ClassElement] returns `null` only if this class is `Object`. If the
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 0032c3e..b7f135d 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -166,9 +166,6 @@
@override
List<ConstructorElement> constructors = [];
-
- @override
- String get name => super.name!;
}
class AugmentedMixinElementImpl extends AugmentedInterfaceElementImpl
@@ -8590,9 +8587,6 @@
}
@override
- String get name => element.name;
-
- @override
ConstructorElement? get unnamedConstructor {
return element.unnamedConstructor;
}
diff --git a/pkg/linter/lib/src/rules/implicit_reopen.dart b/pkg/linter/lib/src/rules/implicit_reopen.dart
index b8017b6..dcb0da8 100644
--- a/pkg/linter/lib/src/rules/implicit_reopen.dart
+++ b/pkg/linter/lib/src/rules/implicit_reopen.dart
@@ -73,8 +73,14 @@
required InterfaceElement2 other,
required String reason,
}) {
- rule.reportLintForToken(member.name,
- arguments: [type, target.name, other.name, reason]);
+ var targetName = target.name;
+ var otherName = other.name;
+ if (targetName != null && otherName != null) {
+ rule.reportLintForToken(
+ member.name,
+ arguments: [type, targetName, otherName, reason],
+ );
+ }
}
@override
diff --git a/pkg/linter/lib/src/rules/null_closures.dart b/pkg/linter/lib/src/rules/null_closures.dart
index c42d4c1..fd9ecde 100644
--- a/pkg/linter/lib/src/rules/null_closures.dart
+++ b/pkg/linter/lib/src/rules/null_closures.dart
@@ -233,13 +233,20 @@
var element = type.element3;
if (element.isSynthetic) return null;
- var method = getMethod(element.library2.name, element.name);
+ var elementName = element.name;
+ if (elementName == null) {
+ return null;
+ }
+
+ var method = getMethod(element.library2.name, elementName);
if (method != null) return method;
for (var supertype in element.allSupertypes) {
var superElement = supertype.element3;
- method = getMethod(superElement.library2.name, superElement.name);
- if (method != null) return method;
+ if (superElement.name case var superElementName?) {
+ method = getMethod(superElement.library2.name, superElementName);
+ if (method != null) return method;
+ }
}
return null;
}