{
return literalOperation.Syntax;
}
+ else if (argument.Value is IFieldReferenceOperation fieldReferenceOperation &&
+ fieldReferenceOperation.Member is IFieldSymbol fieldSymbol && fieldSymbol.IsConst)
+ {
+ return generator.Argument(fieldReferenceOperation.Syntax);
+ }
+ else if (argument.Value.ConstantValue.Value is string str && str.Contains('\\'))
+ {
+ return SyntaxFactory.ParseExpression($"@\"{str}\"");
+ }
else
{
return generator.LiteralExpression(argument.Value.ConstantValue.Value);
Regex regex = MyRegex();
}
- [GeneratedRegex(""a|b\\s\\n2"")]
+ [GeneratedRegex(@""a|b\s\n2"")]
+ private static partial Regex MyRegex();
+}";
+
+ await VerifyCS.VerifyCodeFixAsync(test, expectedFixedCode);
+ }
+
+ [Fact]
+ public async Task InterpolatedStringLiteralSyntaxFixedWhenStringLiteralIsConstantField()
+ {
+ string test = @"using System.Text.RegularExpressions;
+
+partial class Program
+{
+ const string pattern = @""a|b\s\n"";
+ const string pattern2 = $""{pattern}2"";
+
+ static void Main(string[] args)
+ {
+ Regex regex = [|new Regex(pattern2)|];
+ }
+}";
+
+ string expectedFixedCode = @"using System.Text.RegularExpressions;
+
+partial class Program
+{
+ const string pattern = @""a|b\s\n"";
+ const string pattern2 = $""{pattern}2"";
+
+ static void Main(string[] args)
+ {
+ Regex regex = MyRegex();
+ }
+
+ [GeneratedRegex(pattern2)]
+ private static partial Regex MyRegex();
+}";
+
+ await VerifyCS.VerifyCodeFixAsync(test, expectedFixedCode);
+ }
+
+ [Fact]
+ public async Task InterpolatedStringLiteralSyntaxFixedWhenStringLiteralIsExternalConstantField()
+ {
+ string test = @"using System.Text.RegularExpressions;
+
+internal class GlobalConstants
+{
+ const string pattern = @""a|b\s\n"";
+ internal const string pattern2 = $""{pattern}2"";
+}
+partial class Program
+{
+ static void Main(string[] args)
+ {
+ Regex regex = [|new Regex(GlobalConstants.pattern2)|];
+ }
+}";
+
+ string expectedFixedCode = @"using System.Text.RegularExpressions;
+
+internal class GlobalConstants
+{
+ const string pattern = @""a|b\s\n"";
+ internal const string pattern2 = $""{pattern}2"";
+}
+partial class Program
+{
+ static void Main(string[] args)
+ {
+ Regex regex = MyRegex();
+ }
+
+ [GeneratedRegex(GlobalConstants.pattern2)]
private static partial Regex MyRegex();
}";