Issue 2246. Fix for 'Wrap with new widget' assist when activated on a constructor name.

R=brianwilkerson@google.com

Bug: https://github.com/flutter/flutter-intellij/issues/2246
Change-Id: I66ca8b121b2600fa86c787fc26fe6dc01c79c24d
Reviewed-on: https://dart-review.googlesource.com/55272
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2018-05-15 21:22:26 +00:00 committed by commit-bot@chromium.org
parent 07f642384e
commit 8907348ae9
3 changed files with 63 additions and 1 deletions

View file

@ -344,7 +344,10 @@ bool isWidgetExpression(AstNode node) {
if (node == null) {
return false;
}
if (node?.parent is TypeName || node?.parent?.parent is TypeName) {
if (node.parent is TypeName || node.parent?.parent is TypeName) {
return false;
}
if (node.parent is ConstructorName) {
return false;
}
if (node is NamedExpression) {

View file

@ -3687,6 +3687,53 @@ class FakeFlutter {
''');
}
test_flutterWrapCenter_OK_namedConstructor() async {
addFlutterPackage();
await resolveTestUnit('''
import 'package:flutter/widgets.dart';
class MyWidget extends StatelessWidget {
MyWidget.named();
Widget build(BuildContext context) => null;
}
main() {
return MyWidget./*caret*/named();
}
''');
_setCaretLocation();
if (omitNew) {
await assertHasAssist(DartAssistKind.FLUTTER_WRAP_CENTER, '''
import 'package:flutter/widgets.dart';
class MyWidget extends StatelessWidget {
MyWidget.named();
Widget build(BuildContext context) => null;
}
main() {
return /*caret*/Center(child: MyWidget.named());
}
''');
} else {
await assertHasAssist(DartAssistKind.FLUTTER_WRAP_CENTER, '''
import 'package:flutter/widgets.dart';
class MyWidget extends StatelessWidget {
MyWidget.named();
Widget build(BuildContext context) => null;
}
main() {
return new Center(child: MyWidget./*caret*/named());
}
''');
}
}
test_flutterWrapColumn_OK_coveredByWidget() async {
addFlutterPackage();
await resolveTestUnit('''

View file

@ -272,6 +272,7 @@ var b = new Text('bbb');
import 'package:flutter/widgets.dart';
main() {
MyWidget.named(); // use
var text = new Text('abc');
text;
createEmptyText();
@ -280,8 +281,19 @@ main() {
intVariable;
}
class MyWidget extends StatelessWidget {
MyWidget.named();
}
Text createEmptyText() => new Text('');
''');
{
Expression expression = findNodeAtString('named(); // use');
expect(isWidgetExpression(expression), isFalse);
var creation = expression.parent.parent as InstanceCreationExpression;
expect(isWidgetExpression(creation), isTrue);
}
{
Expression expression = findNodeAtString("new Text('abc')");
expect(isWidgetExpression(expression), isTrue);