[analyzer] use preferred quote-style for `AddMissingRequiredArgument`
Bug: #49559
Change-Id: Iec3eea9915e0f4093aad8caa3fc8635081f3f9db
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/260523
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
index f6f6dc6..8571456 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -782,9 +782,12 @@
// If appendColon is false, default values should never be appended.
if (element is ConstructorElement && appendColon) {
if (Flutter.instance.isWidget(element.enclosingElement3)) {
+ var codeStyleOptions = request
+ .analysisSession.analysisContext.analysisOptions.codeStyleOptions;
// Don't bother with nullability. It won't affect default list values.
- var defaultValue =
- getDefaultStringParameterValue(parameter, withNullability: false);
+ var defaultValue = getDefaultStringParameterValue(
+ parameter, codeStyleOptions,
+ withNullability: false);
// TODO(devoncarew): Should we remove the check here? We would then
// suggest values for param types like closures.
if (defaultValue != null && defaultValue.text == '[]') {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
index a1f4f68..a2f978e 100644
--- a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
+++ b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
@@ -6,6 +6,7 @@
import 'package:analysis_server/src/protocol_server.dart'
show CompletionSuggestion, Location;
import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
+import 'package:analyzer/dart/analysis/code_style_options.dart';
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
@@ -165,7 +166,8 @@
}
/// Return a default argument value for the given [parameter].
-DefaultArgument? getDefaultStringParameterValue(ParameterElement parameter,
+DefaultArgument? getDefaultStringParameterValue(
+ ParameterElement parameter, CodeStyleOptions codeStyleOptions,
{required bool withNullability}) {
var type = parameter.type;
if (type is InterfaceType) {
@@ -174,7 +176,8 @@
} else if (type.isDartCoreMap) {
return DefaultArgument('{}', cursorPosition: 1);
} else if (type.isDartCoreString) {
- return DefaultArgument("''", cursorPosition: 1);
+ var quote = codeStyleOptions.preferredQuoteForStrings;
+ return DefaultArgument('$quote$quote', cursorPosition: 1);
}
} else if (type is FunctionType) {
var params = type.parameters
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
index e818a51..2831117 100644
--- a/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
+++ b/pkg/analysis_server/lib/src/services/correction/dart/add_missing_required_argument.dart
@@ -74,7 +74,7 @@
int offset;
var hasTrailingComma = false;
var insertBetweenParams = false;
- List<Expression> arguments = argumentList.arguments;
+ var arguments = argumentList.arguments;
if (arguments.isEmpty) {
offset = argumentList.leftParenthesis.end;
} else {
@@ -93,7 +93,10 @@
}
}
- var defaultValue = getDefaultStringParameterValue(missingParameter,
+ var codeStyleOptions = sessionHelper
+ .session.analysisContext.analysisOptions.codeStyleOptions;
+ var defaultValue = getDefaultStringParameterValue(
+ missingParameter, codeStyleOptions,
withNullability: libraryElement.isNonNullableByDefault &&
(missingParameter.library?.isNonNullableByDefault ?? false));
@@ -107,13 +110,14 @@
// Use defaultValue.cursorPosition if it's not null.
if (defaultValue != null) {
+ var text = defaultValue.text;
var cursorPosition = defaultValue.cursorPosition;
if (cursorPosition != null) {
- builder.write(defaultValue.text.substring(0, cursorPosition));
+ builder.write(text.substring(0, cursorPosition));
builder.selectHere();
- builder.write(defaultValue.text.substring(cursorPosition));
+ builder.write(text.substring(cursorPosition));
} else {
- builder.addSimpleLinkedEdit('VALUE', defaultValue.text);
+ builder.addSimpleLinkedEdit('VALUE', text);
}
} else {
builder.addSimpleLinkedEdit('VALUE', 'null');
diff --git a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
index 9f07038..f4b1faf 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart
@@ -7,6 +7,7 @@
import 'package:analyzer_plugin/utilities/fixes/fixes.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
+import '../../../../analysis_server_base.dart';
import 'fix_processor.dart';
void main() {
@@ -360,6 +361,29 @@
''');
}
+ Future<void> test_doubleQuotes() async {
+ var config = AnalysisOptionsFileConfig(
+ lints: ['prefer_double_quotes'],
+ );
+ newAnalysisOptionsYamlFile(
+ testPackageRootPath,
+ config.toContent(),
+ );
+
+ await resolveTestCode('''
+test({required String a}) {}
+void f() {
+ test();
+}
+''');
+ await assertHasFix('''
+test({required String a}) {}
+void f() {
+ test(a: "");
+}
+''');
+ }
+
Future<void> test_multiple() async {
await resolveTestCode('''
test({required int a, required int bcd}) {}