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>
This commit is contained in:
Konstantin Shcheglov 2021-09-22 17:53:10 +00:00 committed by commit-bot@chromium.org
parent 9854a04210
commit 31922b8c57
2 changed files with 20 additions and 7 deletions

View file

@ -147,13 +147,15 @@ Set<String> _getNamesConflictingAt(AstNode node) {
// local variables and functions // local variables and functions
{ {
var localsRange = _getLocalsConflictingRange(node); var localsRange = _getLocalsConflictingRange(node);
var enclosingExecutable = getEnclosingExecutableNode(node)!; var enclosingExecutable = getEnclosingExecutableNode(node);
var visibleRangeMap = VisibleRangesComputer.forNode(enclosingExecutable); if (enclosingExecutable != null) {
visibleRangeMap.forEach((element, elementRange) { var visibleRangeMap = VisibleRangesComputer.forNode(enclosingExecutable);
if (elementRange.intersects(localsRange)) { visibleRangeMap.forEach((element, elementRange) {
result.add(element.displayName); if (elementRange.intersects(localsRange)) {
} result.add(element.displayName);
}); }
});
}
} }
// fields // fields
{ {

View file

@ -1739,6 +1739,17 @@ void f(bool p, bool p2, bool p3) {
'''); ''');
} }
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 { Future _assertConditionsError(String message) async {
var status = await refactoring.checkAllConditions(); var status = await refactoring.checkAllConditions();
assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR, assertRefactoringStatus(status, RefactoringProblemSeverity.ERROR,