Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 5822645

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Support for 'Wrap with Xyz' for expressions in ExpressionFunctionBody.
[email protected] Bug: flutter/flutter-intellij#3500 Change-Id: I9e14d6cd1a79070fd489740a881199707be83e90 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/103563 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 4b7c05f commit 5822645

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-0
lines changed

pkg/analysis_server/lib/src/utilities/flutter.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ class Flutter {
284284
if (isWidgetExpression(node)) {
285285
var parent = node.parent;
286286
if (parent is ArgumentList ||
287+
parent is ExpressionFunctionBody && parent.expression == node ||
287288
parent is ListLiteral ||
288289
parent is NamedExpression && parent.expression == node ||
289290
parent is Statement) {

pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_center_test.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,22 @@ class MyWidget extends StatelessWidget {
7979
main() {
8080
return Center(child: MyWidget.named());
8181
}
82+
''');
83+
}
84+
85+
test_expressionFunctionBody() async {
86+
addFlutterPackage();
87+
await resolveTestUnit('''
88+
import 'package:flutter/widgets.dart';
89+
class FakeFlutter {
90+
main() => /*caret*/Container();
91+
}
92+
''');
93+
await assertHasAssist('''
94+
import 'package:flutter/widgets.dart';
95+
class FakeFlutter {
96+
main() => Center(child: Container());
97+
}
8298
''');
8399
}
84100
}

pkg/analysis_server/test/src/utilities/flutter_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,16 @@ void useWidget(Widget w) {}
279279
expect(flutter.identifyWidgetExpression(expression), expression);
280280
}
281281

282+
test_identifyWidgetExpression_parent_expressionFunctionBody() async {
283+
await resolveTestUnit('''
284+
import 'package:flutter/widgets.dart';
285+
286+
main(Widget widget) => widget; // ref
287+
''');
288+
Expression expression = findNodeAtString("widget; // ref");
289+
expect(flutter.identifyWidgetExpression(expression), expression);
290+
}
291+
282292
test_identifyWidgetExpression_parent_expressionStatement() async {
283293
await resolveTestUnit('''
284294
import 'package:flutter/widgets.dart';

0 commit comments

Comments
 (0)