Fix an invalid null check in InlineMethodRefactoring.
Saw it failing in the crash log.
Change-Id: I6cf715aeb6f41e405af58a00b69b8742fd7c5ed0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214182
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
index f3e4b67..1f66fe6 100644
--- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
+++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
@@ -147,13 +147,15 @@
// local variables and functions
{
var localsRange = _getLocalsConflictingRange(node);
- var enclosingExecutable = getEnclosingExecutableNode(node)!;
- var visibleRangeMap = VisibleRangesComputer.forNode(enclosingExecutable);
- visibleRangeMap.forEach((element, elementRange) {
- if (elementRange.intersects(localsRange)) {
- result.add(element.displayName);
- }
- });
+ var enclosingExecutable = getEnclosingExecutableNode(node);
+ if (enclosingExecutable != null) {
+ var visibleRangeMap = VisibleRangesComputer.forNode(enclosingExecutable);
+ visibleRangeMap.forEach((element, elementRange) {
+ if (elementRange.intersects(localsRange)) {
+ result.add(element.displayName);
+ }
+ });
+ }
}
// fields
{
diff --git a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
index 4a0f551..35d678c 100644
--- a/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
+++ b/pkg/analysis_server/test/services/refactoring/inline_method_test.dart
@@ -1739,6 +1739,17 @@
''');
}
+ Future<void> test_target_topLevelVariable() async {
+ await indexTestUnit(r'''
+int get test => 42;
+var a = test;
+''');
+ _createRefactoring('test =>');
+ return _assertSuccessfulRefactoring(r'''
+var a = 42;
+''');
+ }
+
Future _assertConditionsError(String message) async {
var status = await refactoring.checkAllConditions();
assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,