enable unnecessary_string_escapes and use_raw_strings (#68302)

This commit is contained in:
Alexandre Ardhuin
2020-10-21 16:34:24 +02:00
committed by GitHub
parent a4ac7cce82
commit ae06c19a37
27 changed files with 1529 additions and 1503 deletions

View File

@@ -390,6 +390,19 @@ class $classNamePrefix$camelCaseName extends $superClass {''';
/// foo$bar = 'foo\$bar'
/// ```
String generateString(String value) {
if (<String>['\n', '\f', '\t', '\r', '\b'].every((String pattern) => !value.contains(pattern))) {
final bool hasDollar = value.contains(r'$');
final bool hasBackslash = value.contains(r'\');
final bool hasQuote = value.contains("'");
final bool hasDoubleQuote = value.contains('"');
if (!hasQuote) {
return hasBackslash || hasDollar ? "r'$value'" : "'$value'";
}
if (!hasDoubleQuote) {
return hasBackslash || hasDollar ? 'r"$value"' : '"$value"';
}
}
const String backslash = '__BACKSLASH__';
assert(
!value.contains(backslash),
@@ -401,17 +414,17 @@ String generateString(String value) {
value = value
// Replace backslashes with a placeholder for now to properly parse
// other special characters.
.replaceAll('\\', backslash)
.replaceAll('\$', '\\\$')
.replaceAll("'", "\\'")
.replaceAll('"', '\\"')
.replaceAll('\n', '\\n')
.replaceAll('\f', '\\f')
.replaceAll('\t', '\\t')
.replaceAll('\r', '\\r')
.replaceAll('\b', '\\b')
.replaceAll(r'\', backslash)
.replaceAll(r'$', r'\$')
.replaceAll("'", r"\'")
.replaceAll('"', r'\"')
.replaceAll('\n', r'\n')
.replaceAll('\f', r'\f')
.replaceAll('\t', r'\t')
.replaceAll('\r', r'\r')
.replaceAll('\b', r'\b')
// Reintroduce escaped backslashes into generated Dart string.
.replaceAll(backslash, '\\\\');
.replaceAll(backslash, r'\\');
return "'$value'";
}