Siegfried Pammer
4a6dcd8d68
Match the VB On Error catch filter exactly
...
Only vbc's On Error lowering produces this filter; structured
Catch...When filters call SetProjectError and never reach it. Roslyn
emits it from a single code path with System.Exception as the type, and
legacy vbc output has the same shape, so there is no chain of unknown
conjuncts to walk. The transform runs before the expression transforms
canonicalize comparisons, so the filter still compares with cgt against
ldnull and cgt.un against zero: the ldnull comparison is fixed up first,
and MatchCompUnsignedZero accepts both the unsigned and canonical form.
Assisted-by: Claude:claude-opus-5:Claude Code
16 hours ago
Christoph Wille
e475e26443
Make ThisResolveResult an ILVariableResolveResult of the this parameter
...
'this' and 'base' both read the 'this' parameter of the function being
decompiled, but their resolve result did not say so: consumers that key on
ILVariableResolveResult (local-reference output, highlighting, hover) could
not connect the keyword to the variable, and the qualified/unqualified
spellings of the same access carried differently shaped annotations.
The resolver has no ILFunction and thus no variable to put into a
ThisResolveResult, so it stops synthesizing one: LookInCurrentType looks
the name up against the (self-parameterized) current type, which grants
the same protected access, and the annotation of an unqualified field
access is built from the translated target instead. ResolveThisReference
and ResolveBaseReference had no callers left and are removed.
Assisted-by: Claude:claude-fable-5:Claude Code
1 month ago
Siegfried Pammer
77d9ee73e9
Fix IDE2000 globally
9 months ago
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
1 year ago
Siegfried Pammer
6c72d1c5f0
Add transform to remove unconstrained generic reference type check.
1 year ago
Daniel Grunwald
3c847b56a2
Fix decompilation of async streams compiled with Roslyn 4.2
4 years ago
Daniel Grunwald
5fb2f7a22f
#nullable enable for ILAst (except for generated code)
5 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
6 years ago
Daniel Grunwald
d8e837ef47
Fix #1772 : Support EnumeratorCancellationAttribute
...
With this change, the async decompiler no longer gets confused by the logic disposing `this.<>x__combinedTokens`.
6 years ago
Daniel Grunwald
57b725df79
Fix #1655 : Incorrect pointer cast when calling method on integer constant
7 years ago
Siegfried Pammer
6ce53c804b
Fix #1168 : Extend MatchCompEquals and MatchCompNotEquals to work with multiple nested logic.not instructions
8 years ago
Siegfried Pammer
adda97cf84
Add AwaitInFinallyTransform
9 years ago
Siegfried Pammer
75a3f6d24b
Add result type invariants for instruction arguments.
9 years ago
Siegfried Pammer
33c5e2d3ed
Add StackType.F4 and StackType.F8, and instructions LdcF4 and LdcF8.
9 years ago
Daniel Grunwald
dc995b15c6
Add support for 'ptr - ptr'.
9 years ago
Siegfried Pammer
a423e7da9c
Expand checks in ExtractStringValuesFromInitBlock and MatchAddCall
9 years ago
Daniel Grunwald
9fcee831d2
Simplify SimplifyCascadingIfStatements
9 years ago
Daniel Grunwald
8533eda92b
Use unary negation '-a' instead of '0 - a'.
9 years ago
Daniel Grunwald
bb3ad5c811
[nullables] Lift user-defined equality operator calls if only one argument is nullable.
9 years ago
Siegfried Pammer
6172dd5bff
Extend MatchLdLocRef to work with type parameters as well.
9 years ago
Daniel Grunwald
53a050552b
Add support for syntax sugar when writing out the ILAst.
9 years ago
Daniel Grunwald
919219524b
Eliminate the dedicated logic.not instruction, and treat it as syntax sugar similar to logic.and/logic.or.
...
'logic.not(arg)' is now represented using 'comp(arg == ldc.i4 0)'.
9 years ago
Daniel Grunwald
133ddac256
[nullables] Add support for lifted conversions.
9 years ago
Siegfried Pammer
c34541ad4c
Implement catch-when and remove local copy of exception slot.
9 years ago
Siegfried Pammer
206cdecf30
Merge Return instruction into Leave.
9 years ago
Daniel Grunwald
b36ae9df7e
Start on new async/await decompiler.
9 years ago
Daniel Grunwald
a5a98ae9f1
Adjust labels of simple switch instructions.
9 years ago
Daniel Grunwald
5621101436
Reconstruct try-finally blocks in yield return decompiler
10 years ago
Daniel Grunwald
38a81d1edf
Fix indentation
10 years ago
Daniel Grunwald
fe84ea9730
WIP: yield return decompiler
10 years ago
Siegfried Pammer
840ec04fde
Namespace adjustments for Syntax classes
10 years ago
Christoph Wille
1ce8349dd9
Adjust namespaces
10 years ago
Siegfried Pammer
4ac1c2d0b0
add CachedDelegateInitialization block transform
10 years ago
Daniel Grunwald
5150cdce25
Improve handling of short-circuiting operators.
10 years ago
Siegfried Pammer
30528ceeb2
Improved transformation of DelegateConstruction and Closure-DisplayClasses
10 years ago
Siegfried Pammer
ae75c57e22
Basic implementation of CompoundAssignmentInstruction
10 years ago
Siegfried Pammer
3a89500e0c
Merge binary arithmetic instructions into one class.
10 years ago
Siegfried Pammer
8766783eb6
Remove ld(s)fld/st(s)fld
10 years ago
Daniel Grunwald
20aec66815
Initial support for decompiling fixed statements
10 years ago
Daniel Grunwald
e1930e9170
Adjust comp.unsigned(ldlen array > ldc.i4 0) transforms to explicit i4->i conversions.
10 years ago
Daniel Grunwald
7e50076671
Introduce array.to.pointer instruction.
...
This is necessary to construct pinned regions in all cases.
10 years ago
Siegfried Pammer
61fe3b4412
Add variable ResultType to Ldlen instruction
10 years ago
Daniel Grunwald
f5e66ff623
Extract reusable DataFlowVisitor from ReachingDefinitions; and add ILVariable.HasInitialValue.
10 years ago
Daniel Grunwald
b55775e2cc
Add reaching definitions analysis.
10 years ago
Daniel Grunwald
288bb928ce
Attempt to improve control flow detection
11 years ago
Daniel Grunwald
0d6424bd12
IntroduceExitPoints
11 years ago
Daniel Grunwald
1720fe5bba
First version of variable inlining.
...
Added ILAst SlotInfo.
11 years ago
Daniel Grunwald
06356512fa
Remove the evaluation stack from ILAst; the ILReader now directly introduces stack variables.
11 years ago
Siegfried Pammer
e0fba0c94e
add generated Match<opCode> methods
11 years ago
Daniel Grunwald
bf917c4352
Decompile call instructions
12 years ago