Siegfried Pammer
b03aa488aa
Performance: Cache ChainedConstructorCallILOffset in ILFunction to avoid having to scan the method body in every inlining step. Take a shortcut for static ctors, as there cannot be chained ctor calls in static ctors.
6 years ago
Siegfried Pammer
e9370f057c
Rework C# decompiler options dialog.
6 years ago
Siegfried Pammer
63646b0ace
Fix #1472 : Apply ExpressionTransforms after CombineExitsTransform to "canonicalize logic and/or"
6 years ago
Daniel Grunwald
2929ae865f
Fix #1460 : assertion in DataFlowVisitor`1.DebugPoint() with try-fault statement.
6 years ago
Siegfried Pammer
6f5284c4ae
WholeProjectDecompiler: Add <Prefer32Bit>True</Prefer32Bit>, if CorFlags.Prefers32Bit is set.
6 years ago
Siegfried Pammer
6c8a55a0af
Fix #1467 : Update WholeProjectDecompiler.GetPlatformName to match Language.GetPlatformDisplayName
6 years ago
Daniel Grunwald
3806610d0a
GetMinimumRequiredVersion(): Add case for C# 8.0
6 years ago
Daniel Grunwald
b7a3c8d640
Fix #1442 : Allow "dynamic?" in the type system.
6 years ago
Daniel Grunwald
8d99af14c5
Add support for 'ref readonly' return type.
6 years ago
Daniel Grunwald
416425b681
Readonly struct method calls on readonly lvalues don't generate temporaries.
6 years ago
Siegfried Pammer
663ba0c5a8
Fix build.
6 years ago
Siegfried Pammer
b0cb976357
Fix #1454 : Name collision after converting for-over-array to foreach.
6 years ago
Siegfried Pammer
2a5ba0f665
Fix linking of local variables and parameters to their usages in the IL view.
6 years ago
Daniel Grunwald
52e6717faf
Fix #1452 : Avoid NullReferenceException when accessing SlotInfo property on the root node
6 years ago
Daniel Grunwald
f18ed5a418
Fix #1453 : Incorrect assert in IL Conv for R4 -> R8
6 years ago
Siegfried Pammer
d4d647bbad
Fix #1455 : NRE in MatchRoslynSwitchOnNullable
6 years ago
Daniel Grunwald
4ad4f6a232
Fix #882 : Don't inline value-type temporaries for setter calls.
6 years ago
Daniel Grunwald
a5505ab00d
Expose IMethod.AccessorKind. This makes it easier to determine if a method is a setter, particular in generic classes where "m.AccessorOwner?.Setter == m" ended up being wrong.
6 years ago
Daniel Grunwald
ae2824af99
Fix #617 : Incorrect C# translation when `callvirt` is used to invoke base constructor
6 years ago
Daniel Grunwald
f7f657204e
Fix #1447 : Assertion on `numeric.compound.add.old(..., ldc.i8 1)`
6 years ago
Siegfried Pammer
eed690a0fc
Fix #1449 : Fix error message typo.
6 years ago
Siegfried Pammer
d9fba190ce
Add missing documentation to Annotations.cs.
7 years ago
Siegfried Pammer
d83f6e6ec0
Remove unused code.
7 years ago
Siegfried Pammer
a23c192324
Add missing documentation in CSharpDecompiler.
7 years ago
Siegfried Pammer
efb66e7878
Add documentation for CodeMappingInfo.
7 years ago
Daniel Grunwald
40b6f0c7bf
Use appropriate type for helper variables introduced for named arguments.
7 years ago
Siegfried Pammer
b0309ca9e3
Fix #1180 : Fix generation of Windows Forms InitializeComponent.
7 years ago
Daniel Grunwald
4987f78d21
Limit the number of instructions validated for the $"{transform.GetType().Name} modified an instruction before pos" assertion; this makes debug-mode performance less horrible.
7 years ago
Daniel Grunwald
eb942b4a21
Fix #1430 : Improve performance in ILInlining.
7 years ago
Siegfried Pammer
1c261c6170
Optimize ProxyCallReplacer: ignore calls to static methods as those can never be a call to a proxy.
...
Enable FixProxyCalls test for rosyln+opt
7 years ago
Siegfried Pammer
5dfc6132d9
Fix #1443 : ProxyCallReplacer replacing non-proxy-calls with arbitrary calls.
7 years ago
Siegfried Pammer
7671ac6fe4
Fix switch on nullable for Roslyn. Ignore switch on bool because it is indistinguishable from if (bool).
7 years ago
Siegfried Pammer
6e49efd5aa
Extend ILInlining to work with StringToInt instructions inside Switch instruction.
7 years ago
Siegfried Pammer
9c62f11e51
Add new switch(string) pattern for Roslyn.
7 years ago
Siegfried Pammer
80bc89f606
Fix SwitchOnStringTransform.SimplifyCascadingIfStatements to handle newer Roslyn code-gen correctly.
7 years ago
Siegfried Pammer
859eb623b8
Fix #1439 : Add DecompilerSettings.UseLambdaSyntax
7 years ago
Siegfried Pammer
d42cf99a8c
Fix dynamic transforms because https://github.com/dotnet/roslyn/issues/27800 was fixed.
7 years ago
Daniel Grunwald
72508b5777
Add test for C# 8 nullable reference types; and fix some bugs.
7 years ago
Daniel Grunwald
3fac3c07a2
Upgrade Roslyn for tests to 3.0.0-beta3.
...
Remove the committed .il files: these were originally intended to prevent test failures due to differences in the C# compiler on the system.
But legacy csc stopped changing long ago; and roslyn is tested via NuGet package, so everyone is using the same version.
Interestingly enough, avoiding the roundtrip through ildasm/ilasm caused some test failures due to changes in the order of top-level types.
So I've started sorting the types by name to ensure consistency in the tests. This required adjusting some existing tests.
7 years ago
Daniel Grunwald
113acd48c1
Improve decompiler behavior is System.ValueTuple exists in multiple referenced assemblies.
...
This can happen if an application is compiled for .NET 4.6.2 and references
System.ValueTuple.dll; but ILSpy loads the latest mscorlib (e.g. .NET 4.7)
which also contains struct System.ValueTuple.
7 years ago
Siegfried Pammer
f05c1bb466
Fix build break; only escape _ if it is a type name. Add basic Discards tests.
7 years ago
Daniel Grunwald
0238e645db
Fix [DecimalConstant] parameters
7 years ago
Daniel Grunwald
d677ee6254
Escape identifier "_" to avoid ambiguities with discard patterns.
7 years ago
Daniel Grunwald
2f35374d7d
Support "where T : unmanaged" constraints.
7 years ago
Siegfried Pammer
94cd891609
Add support for ReadOnlySpan<T> initialization pattern.
7 years ago
Siegfried Pammer
27efe1b61c
Fix #1429 : Optimize ExpressionBuilder.TranslateArrayInitializer by applying optimizations suggested in #1202 .
7 years ago
Siegfried Pammer
0758c7ea32
Fix #1424 : Complex from/where contains compiler generated names
7 years ago
Siegfried Pammer
5962d4675f
Add IL tests for basic isinst patterns. Undo change mentioned in 54ff546221 (commitcomment-32359757)
7 years ago
Siegfried Pammer
545be6d133
Fix CSharpDecompiler.SetNewModifier: follow rules stated in the language specification.
7 years ago
Siegfried Pammer
d9b7df637b
Apply expression-body transform to indexers as well.
7 years ago