Update the wrap-in-padding fix to not add the keyword const when in a constant context

Change-Id: Icc9a8ed08b1294757df336d0d7169ac8b75c95c2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154287
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Brian Wilkerson 2020-07-14 16:34:49 +00:00 committed by commit-bot@chromium.org
parent 444cb00610
commit 9bb4fb680e
2 changed files with 33 additions and 1 deletions

View file

@ -8,6 +8,7 @@ import 'package:analysis_server/src/services/correction/selection_analyzer.dart'
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/source/source_range.dart';
import 'package:analyzer/src/dart/ast/ast.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart';
import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
import 'package:analyzer_plugin/utilities/range_factory.dart';
@ -138,7 +139,11 @@ class _FlutterWrapPadding extends _WrapSingleWidget {
AssistKind get assistKind => DartAssistKind.FLUTTER_WRAP_PADDING;
@override
List<String> get _leadingLines => ['padding: const EdgeInsets.all(8.0),'];
List<String> get _leadingLines {
var keyword =
(widgetExpr as ExpressionImpl).inConstantContext ? '' : ' const';
return ['padding:$keyword EdgeInsets.all(8.0),'];
}
@override
String get _parentClassName => 'Padding';

View file

@ -57,4 +57,31 @@ class FakeFlutter {
''');
await assertNoAssist();
}
Future<void> test_inConstantContext() async {
addFlutterPackage();
await resolveTestUnit('''
import 'package:flutter/widgets.dart';
class FakeFlutter {
Widget build() {
return const Center(
child: /*caret*/Text('x'),
);
}
}
''');
await assertHasAssist('''
import 'package:flutter/widgets.dart';
class FakeFlutter {
Widget build() {
return const Center(
child: Padding(
padding: EdgeInsets.all(8.0),
child: Text('x'),
),
);
}
}
''');
}
}