Skip to content

Commit 8f79645

Browse files
FMorschelCommit Queue
authored andcommitted
[DAS] Fixes closure cases for inline method refactor
[email protected], [email protected] Fixes: #60160 Change-Id: Ie6313a92d5e4326b81ad0f277c5a8ff2c264ca39 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/410603 Commit-Queue: Phil Quitslund <[email protected]> Auto-Submit: Felipe Morschel <[email protected]> Reviewed-by: Phil Quitslund <[email protected]> Reviewed-by: Konstantin Shcheglov <[email protected]>
1 parent f559fe7 commit 8f79645

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

pkg/analysis_server/lib/src/services/refactoring/legacy/inline_method.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -826,6 +826,11 @@ class _ReturnsValidatorVisitor extends RecursiveAstVisitor<void> {
826826

827827
_ReturnsValidatorVisitor(this.result);
828828

829+
@override
830+
void visitFunctionExpression(FunctionExpression node) {
831+
// Return statements within closures aren't counted.
832+
}
833+
829834
@override
830835
void visitReturnStatement(ReturnStatement node) {
831836
_numReturns++;

pkg/analysis_server/test/services/refactoring/legacy/inline_method_test.dart

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,48 @@ void f() {
11631163
expect(refactoring.inlineAll, false);
11641164
}
11651165

1166+
Future<void> test_inner_bodyClosure() async {
1167+
await indexTestUnit('''
1168+
int test() {
1169+
var c = () {
1170+
return 1;
1171+
};
1172+
return c();
1173+
}
1174+
void f() {
1175+
var res = test();
1176+
}
1177+
''');
1178+
_createRefactoring('test() {');
1179+
return _assertSuccessfulRefactoring('''
1180+
void f() {
1181+
var c = () {
1182+
return 1;
1183+
};
1184+
var res = c();
1185+
}
1186+
''');
1187+
}
1188+
1189+
Future<void> test_inner_expressionClosure() async {
1190+
await indexTestUnit('''
1191+
int test() {
1192+
var c = () => 1;
1193+
return c();
1194+
}
1195+
void f() {
1196+
var res = test();
1197+
}
1198+
''');
1199+
_createRefactoring('test() {');
1200+
return _assertSuccessfulRefactoring('''
1201+
void f() {
1202+
var c = () => 1;
1203+
var res = c();
1204+
}
1205+
''');
1206+
}
1207+
11661208
Future<void> test_intoStringInterpolation2_integerLiteral() async {
11671209
await indexTestUnit(r'''
11681210
void f() {

0 commit comments

Comments
 (0)