Skip to content

Commit

Permalink
Move GlobalizationMode initialization into a nested class (#53082)
Browse files Browse the repository at this point in the history
  • Loading branch information
marek-safar committed May 22, 2021
1 parent 4114340 commit bc27d49
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -673,8 +673,9 @@ private static CultureData CreateCultureWithInvariantData()
return CultureData.Invariant;
}

if (GlobalizationMode.PredefinedCulturesOnly && !GlobalizationMode.Invariant)
if (GlobalizationMode.PredefinedCulturesOnly)
{
Debug.Assert(!GlobalizationMode.Invariant);
if (GlobalizationMode.UseNls ? !NlsIsEnsurePredefinedLocaleName(cultureName): !IcuIsEnsurePredefinedLocaleName(cultureName))
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ namespace System.Globalization
{
internal static partial class GlobalizationMode
{
// Order of these properties in Windows matter because GetUseIcuMode is dependent on Invariant.
// So we need Invariant to be initialized first.
internal static bool Invariant { get; } = GetGlobalizationInvariantMode();
private static partial class Settings
{
internal static readonly bool Invariant = GetGlobalizationInvariantMode();
}

internal static bool Invariant => Settings.Invariant;

internal static bool UseNls => false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,19 @@ namespace System.Globalization
{
internal static partial class GlobalizationMode
{
private static partial class Settings
{
internal static readonly bool PredefinedCulturesOnly = AppContextConfigHelper.GetBooleanConfig("System.Globalization.PredefinedCulturesOnly", "DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY");
}

internal static bool PredefinedCulturesOnly => !Invariant && Settings.PredefinedCulturesOnly;

private static bool GetInvariantSwitchValue() =>
AppContextConfigHelper.GetBooleanConfig("System.Globalization.Invariant", "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT");

private static bool TryGetAppLocalIcuSwitchValue([NotNullWhen(true)] out string? value) =>
TryGetStringValue("System.Globalization.AppLocalIcu", "DOTNET_SYSTEM_GLOBALIZATION_APPLOCALICU", out value);

internal static bool PredefinedCulturesOnly { get; } =
AppContextConfigHelper.GetBooleanConfig("System.Globalization.PredefinedCulturesOnly", "DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY");

private static bool TryGetStringValue(string switchName, string envVariable, [NotNullWhen(true)] out string? value)
{
value = AppContext.GetData(switchName) as string;
Expand Down

0 comments on commit bc27d49

Please sign in to comment.