mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 03:47:13 +00:00
Add 'Convert to multiline string' quick assist.
R=brianwilkerson@google.com Change-Id: Ieaa893e6ceb64ba41d84189267e0087d042fe4e6 Reviewed-on: https://dart-review.googlesource.com/c/91262 Commit-Queue: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
parent
c5cfdc5279
commit
f92b816268
|
@ -77,6 +77,10 @@ class DartAssistKind {
|
|||
"Convert to field formal parameter");
|
||||
static const CONVERT_TO_INT_LITERAL = const AssistKind(
|
||||
'dart.assist.convert.toIntLiteral', 30, "Convert to an int literal");
|
||||
static const CONVERT_TO_MULTILINE_STRING = const AssistKind(
|
||||
'dart.assist.convert.toMultilineString',
|
||||
30,
|
||||
"Convert to multiline string");
|
||||
static const CONVERT_TO_NORMAL_PARAMETER = const AssistKind(
|
||||
'dart.assist.convert.toConstructorNormalParameter',
|
||||
30,
|
||||
|
|
|
@ -99,6 +99,7 @@ class AssistProcessor {
|
|||
await _addProposal_convertToIsNot_onNot();
|
||||
await _addProposal_convertToIsNotEmpty();
|
||||
await _addProposal_convertToFieldParameter();
|
||||
await _addProposal_convertToMultilineString();
|
||||
await _addProposal_convertToNormalParameter();
|
||||
await _addProposal_convertToSingleQuotedString();
|
||||
await _addProposal_encapsulateField();
|
||||
|
@ -1266,6 +1267,36 @@ class AssistProcessor {
|
|||
}
|
||||
}
|
||||
|
||||
Future<void> _addProposal_convertToMultilineString() async {
|
||||
var node = this.node;
|
||||
if (node is InterpolationElement) {
|
||||
node = (node as InterpolationElement).parent;
|
||||
}
|
||||
if (node is SingleStringLiteral) {
|
||||
SingleStringLiteral literal = node;
|
||||
if (!literal.isMultiline) {
|
||||
var changeBuilder = _newDartChangeBuilder();
|
||||
await changeBuilder.addFileEdit(file, (builder) {
|
||||
var newQuote = literal.isSingleQuoted ? "'''" : '"""';
|
||||
builder.addReplacement(
|
||||
SourceRange(literal.offset + (literal.isRaw ? 1 : 0), 1),
|
||||
(builder) {
|
||||
builder.writeln(newQuote);
|
||||
},
|
||||
);
|
||||
builder.addSimpleReplacement(
|
||||
SourceRange(literal.end - 1, 1),
|
||||
newQuote,
|
||||
);
|
||||
});
|
||||
_addAssistFromBuilder(
|
||||
changeBuilder,
|
||||
DartAssistKind.CONVERT_TO_MULTILINE_STRING,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _addProposal_convertToSingleQuotedString() async {
|
||||
// TODO(brianwilkerson) Determine whether this await is necessary.
|
||||
await null;
|
||||
|
|
|
@ -0,0 +1,122 @@
|
|||
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
|
||||
// for details. All rights reserved. Use of this source code is governed by a
|
||||
// BSD-style license that can be found in the LICENSE file.
|
||||
|
||||
import 'package:analysis_server/src/services/correction/assist.dart';
|
||||
import 'package:analyzer_plugin/utilities/assist/assist.dart';
|
||||
import 'package:test_reflective_loader/test_reflective_loader.dart';
|
||||
|
||||
import 'assist_processor.dart';
|
||||
|
||||
main() {
|
||||
defineReflectiveSuite(() {
|
||||
defineReflectiveTests(ConvertToMultilineStringTest);
|
||||
});
|
||||
}
|
||||
|
||||
@reflectiveTest
|
||||
class ConvertToMultilineStringTest extends AssistProcessorTest {
|
||||
@override
|
||||
AssistKind get kind => DartAssistKind.CONVERT_TO_MULTILINE_STRING;
|
||||
|
||||
test_doubleQuoted() async {
|
||||
await resolveTestUnit('''
|
||||
main() {
|
||||
print("abc");
|
||||
}
|
||||
''');
|
||||
await assertHasAssistAt('abc', '''
|
||||
main() {
|
||||
print("""
|
||||
abc""");
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_doubleQuoted_alreadyMultiline() async {
|
||||
await resolveTestUnit('''
|
||||
main() {
|
||||
print("""abc""");
|
||||
}
|
||||
''');
|
||||
await assertNoAssistAt('abc');
|
||||
}
|
||||
|
||||
test_doubleQuoted_interpolation() async {
|
||||
await resolveTestUnit(r"""
|
||||
main() {
|
||||
var b = 'b';
|
||||
var c = 'c';
|
||||
print("a $b-${c} d");
|
||||
}
|
||||
""");
|
||||
await assertHasAssistAt('"a ', r'''
|
||||
main() {
|
||||
var b = 'b';
|
||||
var c = 'c';
|
||||
print("""
|
||||
a $b-${c} d""");
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_doubleQuoted_raw() async {
|
||||
await resolveTestUnit('''
|
||||
main() {
|
||||
print(r"abc");
|
||||
}
|
||||
''');
|
||||
await assertHasAssistAt('abc', '''
|
||||
main() {
|
||||
print(r"""
|
||||
abc""");
|
||||
}
|
||||
''');
|
||||
}
|
||||
|
||||
test_singleQuoted() async {
|
||||
await resolveTestUnit('''
|
||||
main() {
|
||||
print('abc');
|
||||
}
|
||||
''');
|
||||
await assertHasAssistAt('abc', """
|
||||
main() {
|
||||
print('''
|
||||
abc''');
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
test_singleQuoted_interpolation() async {
|
||||
await resolveTestUnit(r"""
|
||||
main() {
|
||||
var b = 'b';
|
||||
var c = 'c';
|
||||
print('a $b-${c} d');
|
||||
}
|
||||
""");
|
||||
await assertHasAssistAt("'a ", r"""
|
||||
main() {
|
||||
var b = 'b';
|
||||
var c = 'c';
|
||||
print('''
|
||||
a $b-${c} d''');
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
test_singleQuoted_raw() async {
|
||||
await resolveTestUnit('''
|
||||
main() {
|
||||
print(r'abc');
|
||||
}
|
||||
''');
|
||||
await assertHasAssistAt('abc', """
|
||||
main() {
|
||||
print(r'''
|
||||
abc''');
|
||||
}
|
||||
""");
|
||||
}
|
||||
}
|
|
@ -26,6 +26,7 @@ import 'convert_to_double_quoted_string_test.dart'
|
|||
as convert_to_double_quoted_string;
|
||||
import 'convert_to_field_parameter_test.dart' as convert_to_field_parameter;
|
||||
import 'convert_to_int_literal_test.dart' as convert_to_int_literal;
|
||||
import 'convert_to_multiline_string_test.dart' as convert_to_multiline_string;
|
||||
import 'convert_to_normal_parameter_test.dart' as convert_to_normal_parameter;
|
||||
import 'convert_to_single_quoted_string_test.dart'
|
||||
as convert_to_single_quoted_string;
|
||||
|
@ -88,6 +89,7 @@ main() {
|
|||
convert_to_double_quoted_string.main();
|
||||
convert_to_field_parameter.main();
|
||||
convert_to_int_literal.main();
|
||||
convert_to_multiline_string.main();
|
||||
convert_to_normal_parameter.main();
|
||||
convert_to_single_quoted_string.main();
|
||||
encapsulate_field.main();
|
||||
|
|
Loading…
Reference in a new issue