Skip to content

Commit 880e73c

Browse files
authored
Fix patterns that defeat resource string optimizations in CoreLib (#82947)
Replace the resource string keys with enums Fixes #82759
1 parent 81e159e commit 880e73c

File tree

4 files changed

+183
-139
lines changed

4 files changed

+183
-139
lines changed

src/libraries/System.Private.CoreLib/src/System/DateOnly.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,7 @@ private static ParseFailureKind TryParseInternal(ReadOnlySpan<char> s, IFormatPr
436436
if ((style & ~DateTimeStyles.AllowWhiteSpaces) != 0)
437437
{
438438
result = default;
439-
return ParseFailureKind.FormatWithParameter;
439+
return ParseFailureKind.Argument_InvalidDateStyles;
440440
}
441441

442442
DateTimeResult dtResult = default;
@@ -445,13 +445,13 @@ private static ParseFailureKind TryParseInternal(ReadOnlySpan<char> s, IFormatPr
445445
if (!DateTimeParse.TryParse(s, DateTimeFormatInfo.GetInstance(provider), style, ref dtResult))
446446
{
447447
result = default;
448-
return ParseFailureKind.FormatWithOriginalDateTime;
448+
return ParseFailureKind.Format_BadDateOnly;
449449
}
450450

451451
if ((dtResult.flags & ParseFlagsDateMask) != 0)
452452
{
453453
result = default;
454-
return ParseFailureKind.WrongParts;
454+
return ParseFailureKind.Format_DateTimeOnlyContainsNoneDateParts;
455455
}
456456

457457
result = new DateOnly(DayNumberFromDateTime(dtResult.parsedDate));
@@ -485,7 +485,7 @@ private static ParseFailureKind TryParseExactInternal(ReadOnlySpan<char> s, Read
485485
if ((style & ~DateTimeStyles.AllowWhiteSpaces) != 0)
486486
{
487487
result = default;
488-
return ParseFailureKind.FormatWithParameter;
488+
return ParseFailureKind.Argument_InvalidDateStyles;
489489
}
490490

491491
if (format.Length == 1)
@@ -512,13 +512,13 @@ private static ParseFailureKind TryParseExactInternal(ReadOnlySpan<char> s, Read
512512
if (!DateTimeParse.TryParseExact(s, format, DateTimeFormatInfo.GetInstance(provider), style, ref dtResult))
513513
{
514514
result = default;
515-
return ParseFailureKind.FormatWithOriginalDateTime;
515+
return ParseFailureKind.Format_BadDateOnly;
516516
}
517517

518518
if ((dtResult.flags & ParseFlagsDateMask) != 0)
519519
{
520520
result = default;
521-
return ParseFailureKind.WrongParts;
521+
return ParseFailureKind.Format_DateTimeOnlyContainsNoneDateParts;
522522
}
523523

524524
result = new DateOnly(DayNumberFromDateTime(dtResult.parsedDate));
@@ -552,7 +552,7 @@ private static ParseFailureKind TryParseExactInternal(ReadOnlySpan<char> s, stri
552552
if ((style & ~DateTimeStyles.AllowWhiteSpaces) != 0 || formats == null)
553553
{
554554
result = default;
555-
return ParseFailureKind.FormatWithParameter;
555+
return ParseFailureKind.Argument_InvalidDateStyles;
556556
}
557557

558558
DateTimeFormatInfo dtfi = DateTimeFormatInfo.GetInstance(provider);
@@ -564,7 +564,7 @@ private static ParseFailureKind TryParseExactInternal(ReadOnlySpan<char> s, stri
564564
if (string.IsNullOrEmpty(format))
565565
{
566566
result = default;
567-
return ParseFailureKind.FormatWithFormatSpecifier;
567+
return ParseFailureKind.Argument_BadFormatSpecifier;
568568
}
569569

570570
if (format.Length == 1)
@@ -597,7 +597,7 @@ private static ParseFailureKind TryParseExactInternal(ReadOnlySpan<char> s, stri
597597
}
598598

599599
result = default;
600-
return ParseFailureKind.FormatWithOriginalDateTime;
600+
return ParseFailureKind.Format_BadDateOnly;
601601
}
602602

603603
/// <summary>
@@ -692,11 +692,11 @@ private static void ThrowOnError(ParseFailureKind result, ReadOnlySpan<char> s)
692692
Debug.Assert(result != ParseFailureKind.None);
693693
switch (result)
694694
{
695-
case ParseFailureKind.FormatWithParameter: throw new ArgumentException(SR.Argument_InvalidDateStyles, "style");
696-
case ParseFailureKind.FormatWithOriginalDateTime: throw new FormatException(SR.Format(SR.Format_BadDateOnly, s.ToString()));
697-
case ParseFailureKind.FormatWithFormatSpecifier: throw new FormatException(SR.Argument_BadFormatSpecifier);
695+
case ParseFailureKind.Argument_InvalidDateStyles: throw new ArgumentException(SR.Argument_InvalidDateStyles, "style");
696+
case ParseFailureKind.Argument_BadFormatSpecifier: throw new FormatException(SR.Argument_BadFormatSpecifier);
697+
case ParseFailureKind.Format_BadDateOnly: throw new FormatException(SR.Format(SR.Format_BadDateOnly, s.ToString()));
698698
default:
699-
Debug.Assert(result == ParseFailureKind.WrongParts);
699+
Debug.Assert(result == ParseFailureKind.Format_DateTimeOnlyContainsNoneDateParts);
700700
throw new FormatException(SR.Format(SR.Format_DateTimeOnlyContainsNoneDateParts, s.ToString(), nameof(DateOnly)));
701701
}
702702
}

0 commit comments

Comments
 (0)