Browse Source

Rename option to "UseObjectCreationOfGenericTypeParameter"

pull/3497/head
Siegfried Pammer 1 week ago
parent
commit
49368caf1c
  1. 2
      ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs
  2. 18
      ICSharpCode.Decompiler/DecompilerSettings.cs
  3. 3
      ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs
  4. 4
      ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs

2
ICSharpCode.Decompiler/CSharp/Transforms/ReplaceMethodCallsWithOperators.cs

@ -138,7 +138,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms @@ -138,7 +138,7 @@ namespace ICSharpCode.Decompiler.CSharp.Transforms
break;
*/
case "System.Activator.CreateInstance":
if (context.Settings.GenericTypeInstantiation &&
if (context.Settings.UseObjectCreationOfGenericTypeParameter &&
arguments.Length == 0 &&
method.TypeArguments.Count == 1 &&
IsInstantiableTypeParameter(method.TypeArguments[0]))

18
ICSharpCode.Decompiler/DecompilerSettings.cs

@ -63,7 +63,7 @@ namespace ICSharpCode.Decompiler @@ -63,7 +63,7 @@ namespace ICSharpCode.Decompiler
liftNullables = false;
yieldReturn = false;
useImplicitMethodGroupConversion = false;
genericTypeInstantiation = false;
useObjectCreationOfGenericTypeParameter = false;
}
if (languageVersion < CSharp.LanguageVersion.CSharp3)
{
@ -211,7 +211,7 @@ namespace ICSharpCode.Decompiler @@ -211,7 +211,7 @@ namespace ICSharpCode.Decompiler
if (anonymousTypes || objectCollectionInitializers || automaticProperties
|| queryExpressions || expressionTrees)
return CSharp.LanguageVersion.CSharp3;
if (anonymousMethods || liftNullables || yieldReturn || useImplicitMethodGroupConversion || genericTypeInstantiation)
if (anonymousMethods || liftNullables || yieldReturn || useImplicitMethodGroupConversion || useObjectCreationOfGenericTypeParameter)
return CSharp.LanguageVersion.CSharp2;
return CSharp.LanguageVersion.CSharp1;
}
@ -987,21 +987,21 @@ namespace ICSharpCode.Decompiler @@ -987,21 +987,21 @@ namespace ICSharpCode.Decompiler
}
}
bool genericTypeInstantiation = true;
bool useObjectCreationOfGenericTypeParameter = true;
/// <summary>
/// Gets/Sets whether to use generic type instantiation for generic types with <c>new()</c> constraint.
/// Gets/Sets whether to use object creation expressions for generic types with <c>new()</c> constraint.
/// true: <c>T t = new T();</c>
/// false: <c>T t = Activator.CreateInstance&lt;T&gt;()</c>
/// </summary>
[Category("C# 2.0 / VS 2005")]
[Description("DecompilerSettings.GenericTypeInstantiation")]
public bool GenericTypeInstantiation {
get { return genericTypeInstantiation; }
[Description("DecompilerSettings.UseObjectCreationOfGenericTypeParameter")]
public bool UseObjectCreationOfGenericTypeParameter {
get { return useObjectCreationOfGenericTypeParameter; }
set {
if (genericTypeInstantiation != value)
if (useObjectCreationOfGenericTypeParameter != value)
{
genericTypeInstantiation = value;
useObjectCreationOfGenericTypeParameter = value;
OnPropertyChanged();
}
}

3
ICSharpCode.Decompiler/IL/Transforms/ExpressionTransforms.cs

@ -532,7 +532,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -532,7 +532,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms
inst.Condition.AcceptVisitor(this);
if (new NullableLiftingTransform(context).Run(inst))
{
context.Step("NullableLiftingTransform", inst);
return;
}
if (TransformDynamicAddAssignOrRemoveAssign(inst))
return;

4
ICSharpCode.Decompiler/IL/Transforms/TransformCollectionAndObjectInitializers.cs

@ -76,6 +76,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms @@ -76,6 +76,10 @@ namespace ICSharpCode.Decompiler.IL.Transforms
instType = defaultVal.Type;
break;
case Call c when c.Method.FullNameIs("System.Activator", "CreateInstance") && c.Method.TypeArguments.Count == 1:
if (!context.Settings.UseObjectCreationOfGenericTypeParameter)
{
return;
}
instType = c.Method.TypeArguments[0];
blockKind = BlockKind.ObjectInitializer;
break;

Loading…
Cancel
Save