Issue 56413. Consider prefer_int_literals in 'Wrap with Padding'.
Bug: https://github.com/dart-lang/sdk/issues/56413
Change-Id: I0e4aa2a53a2387caa4ad451e7033767c1b180436
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/384100
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
index 347c93f..fe52584 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap.dart
@@ -158,7 +158,9 @@
@override
List<String> get _leadingLines {
var keyword = widgetExpr.inConstantContext ? '' : ' const';
- return ['padding:$keyword EdgeInsets.all(8.0),'];
+ var codeStyleOptions = getCodeStyleOptions(unitResult.file);
+ var paddingStr = codeStyleOptions.preferIntLiterals ? '8' : '8.0';
+ return ['padding:$keyword EdgeInsets.all($paddingStr),'];
}
@override
diff --git a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
index 7e676fc..05c24d8 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/flutter_wrap_padding_test.dart
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
import 'package:analysis_server/src/services/correction/assist.dart';
+import 'package:analysis_server/src/services/linter/lint_names.dart';
import 'package:analyzer_plugin/utilities/assist/assist.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -30,21 +31,46 @@
Future<void> test_aroundContainer() async {
await resolveTestCode('''
import 'package:flutter/widgets.dart';
-class FakeFlutter {
- Widget f() {
- return /*caret*/Container();
- }
+
+void f() {
+ /*caret*/Container();
}
''');
await assertHasAssist('''
import 'package:flutter/widgets.dart';
-class FakeFlutter {
- Widget f() {
- return Padding(
- padding: const EdgeInsets.all(8.0),
- child: Container(),
- );
+
+void f() {
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Container(),
+ );
+}
+''');
}
+
+ Future<void> test_aroundContainer_preferIntLiterals() async {
+ createAnalysisOptionsFile(
+ lints: [
+ LintNames.prefer_int_literals,
+ ],
+ );
+
+ await resolveTestCode('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ /*caret*/Container();
+}
+''');
+
+ await assertHasAssist('''
+import 'package:flutter/widgets.dart';
+
+void f() {
+ Padding(
+ padding: const EdgeInsets.all(8),
+ child: Container(),
+ );
}
''');
}
@@ -52,13 +78,12 @@
Future<void> test_aroundPadding() async {
await resolveTestCode('''
import 'package:flutter/widgets.dart';
-class FakeFlutter {
- Widget f() {
- return Padding(
- padding: const EdgeInsets.all(8.0),
- child: Container(),
- );
- }
+
+void f() {
+ Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: Container(),
+ );
}
''');
await assertNoAssist();
@@ -67,25 +92,23 @@
Future<void> test_inConstantContext() async {
await resolveTestCode('''
import 'package:flutter/widgets.dart';
-class FakeFlutter {
- Widget build() {
- return const Center(
- child: /*caret*/Text('x'),
- );
- }
+
+void f() {
+ 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'),
- ),
- );
- }
+
+void f() {
+ const Center(
+ child: Padding(
+ padding: EdgeInsets.all(8.0),
+ child: Text('x'),
+ ),
+ );
}
''');
}
diff --git a/pkg/analyzer/lib/dart/analysis/code_style_options.dart b/pkg/analyzer/lib/dart/analysis/code_style_options.dart
index 81cbee5..b72c3b5 100644
--- a/pkg/analyzer/lib/dart/analysis/code_style_options.dart
+++ b/pkg/analyzer/lib/dart/analysis/code_style_options.dart
@@ -16,6 +16,9 @@
/// Return `true` if local variables should be `final` whenever possible.
bool get makeLocalsFinal;
+ /// Return `true` if `prefer_int_literals` is enabled.
+ bool get preferIntLiterals;
+
/// Return the preferred quote based on the enabled lints, otherwise a single
/// quote.
String get preferredQuoteForStrings;
diff --git a/pkg/analyzer/lib/src/analysis_options/code_style_options.dart b/pkg/analyzer/lib/src/analysis_options/code_style_options.dart
index a9cb118..27c294f 100644
--- a/pkg/analyzer/lib/src/analysis_options/code_style_options.dart
+++ b/pkg/analyzer/lib/src/analysis_options/code_style_options.dart
@@ -24,6 +24,9 @@
bool get makeLocalsFinal => _isLintEnabled('prefer_final_locals');
@override
+ bool get preferIntLiterals => _isLintEnabled('prefer_int_literals');
+
+ @override
String get preferredQuoteForStrings => _lintQuote() ?? "'";
@override