Siegfried Pammer
04505bbdf2
Highlight and scroll to the changed instruction in the ILAst view
...
The C# debug-steps view highlights and centers the exact AST node a
transform changed; the ILAst view already had the step tree and
replay-at-step but produced no highlight. Bring it to parity.
IL rendering has no token-writer seam like the C# output visitor, so
per-instruction text spans are recorded by bracketing
ILInstruction.WriteTo via a new INodeTrackingOutput. The dominant
inst.ReplaceWith(newInst) transform pattern detaches the instruction
passed to Step, so ILTransformContext gains EndStep to record the
produced instruction; Stepper additionally records the position's
ancestor chain as fallback candidates before the step-limit throw, so
the "show state before" view -- which halts at the selected step --
still resolves to a surviving ancestor (ultimately the ILFunction).
The highlight-range resolver is shared with the C# language.
Assisted-by: Claude:claude-opus-4-8:Claude Code
6 days ago
Siegfried Pammer
77d9ee73e9
Fix IDE2000 globally
6 months ago
Peter Crabtree
e1e16b64f5
dev: Strip BOM mark from text files
10 months ago
Siegfried Pammer
9f77f8a919
Prevent inlining of call arguments when doing so would change order of evaluation with regards to the implicit ldobj performed by a constrained.callvirt.
1 year ago
Siegfried Pammer
f66ccea9ef
Fix #3296 : Ensure unknown types are wrapped properly in "Convert Expression Tree"
2 years ago
Siegfried Pammer
401cb77ae3
Fix #3189 : Support primitive types in Expression.Constant(object) pattern.
2 years ago
Siegfried Pammer
7e1e9d65fd
Fix #2922 : Invalid object initializer ILAst, when expression tree contains get-accessor in Expression.Bind. Because either one of the accessors is used by Expression.Bind to determine the property, we can safely use the set-accessor instead.
3 years ago
Siegfried Pammer
d3f8912d53
Handle special-cases with addressof:
...
- Never introduce casts for ldobj-address-chains
- Add special-case to TransformExpressionTrees: transform addressof(ldloc) to ldloca
- Classify foreach and using variables as readonly lvalues
4 years ago
Siegfried Pammer
164c8880af
#2092 : Make TransformExpressionTrees.MatchGetTypeFromHandle and TransformExpressionTrees.MatchGetContructorFromHandle use IType.FullName instead of actual IType instances, so we can better handle assemblies processed by tools like ILMerge, where there might be used multiple versions of mscorlib in one assembly.
5 years ago
Siegfried Pammer
2d65deffda
Fix frontends.sln build.
5 years ago
Siegfried Pammer
ba39dd5c55
Fix #2354 : decompilation of unary and binary operators with nullable value types.
5 years ago
文煌
581a1de185
fix https://github.com/icsharpcode/ILSpy/issues/2288
6 years ago
Siegfried Pammer
3676107379
Fix #2266 : Failed to decompile complex expression tree.
6 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
6 years ago
Siegfried Pammer
55842e4bfc
Fix #2120 : An expression tree may not contain a base access
6 years ago
Daniel Grunwald
b6b5f1e8e6
#2092 : ILFunction.Parameters / ILFunction.ReturnType should never be null.
6 years ago
Siegfried Pammer
761c3fef14
Adapt TransformExpressionTrees to ILAst changes.
6 years ago
Siegfried Pammer
d2abce2a7b
Fix possible NRE in TransformExpressionTrees.MatchGetTypeFromHandle and related methods
6 years ago
Siegfried Pammer
bcd7219535
Adjust CapturedVariables collection in ReplaceDelegateTargetVisitor and in TransformExpressionTrees
6 years ago
Siegfried Pammer
b92a4b956c
#1940 : Ignore nullability in ETs
6 years ago
Siegfried Pammer
c676665a61
#1940 : Refactor TransformExpressionTrees to support rolling back all changes if the transform fails.
6 years ago
Daniel Grunwald
42f71b56f6
Fix #1811 : Assert in NullCoalescingInstruction.CheckInvariant after expression tree transform
7 years ago
Daniel Grunwald
57b725df79
Fix #1655 : Incorrect pointer cast when calling method on integer constant
7 years ago
Siegfried Pammer
87353aac5a
Fix #1624 : Stack type mismatch in expression trees.
7 years ago
Siegfried Pammer
0d92ee805c
#1349 : Insert conv instruction in expression tree, if inst.ResultType != typeHint.GetStackType()
7 years ago
Siegfried Pammer
667ac1a980
Fix #1538 : Insert expression.tree.cast instructions to coerce references to outer expression tree parameter definitions to their actual type.
7 years ago
Siegfried Pammer
a3dbc27f76
Fix #1573 : if the expected type of the this argument of an expression tree call is unknown, insert an explicit conv *->unknown instruction
7 years ago
Siegfried Pammer
b42d4963e7
Fix assertions in TransformExpressionTrees.
7 years ago
Siegfried Pammer
5a2302089b
Refactor TransformDisplayClassUsage into separate transform.
...
Make display class detection pattern-based instead of name-based. Fixes #1554
7 years ago
Siegfried Pammer
bd77b8301f
Basic implementation of local functions.
7 years ago
Siegfried Pammer
0e638dcb28
Fix #1524 : Adjust expression trees transform to work with async code as well.
7 years ago
Siegfried Pammer
8dc80583ec
#1485 : Fix decompilation of TypeAs with Nullable<T> in expression trees
7 years ago
Siegfried Pammer
c1fca21e8a
Make ILRange field private - introduce public API for IL range manipulation.
7 years ago
Siegfried Pammer
0c1134f5ed
Fix #1356 : ExpressionTrees: ref parameter usage not transformed correctly.
8 years ago
Siegfried Pammer
cb5960b8e0
Fix #1355 : System.ArgumentException: An item with the same key has already been added in Decompiler.IL.Transforms.TransformExpressionTrees.ConvertLambda
8 years ago
Daniel Grunwald
0a9df3d373
Fix #1252 : Incorrect comparison type for lifted comparisons in expression trees.
8 years ago
Daniel Grunwald
12e74daf48
Handle Comp in InferType().
8 years ago
Chicken-Bones
e9b766d708
Improve persistence of IL offsets through various transforms.
8 years ago
Siegfried Pammer
4fab913bf6
Fix #1249 : Bug in detection of multiple nested expression trees in query expressions.
8 years ago
Andrew Au
9837933e9d
Fix issue #1224
8 years ago
Daniel Grunwald
90d866d78a
Fix #1193 : Performance issues with deeply nested block structures
8 years ago
Daniel Grunwald
b396d203bd
Merge IDecompilerTypeSystem with ICompilation.
8 years ago
Daniel Grunwald
107fe5eb1c
Eliminate SpecializingDecompilerTypeSystem and use GenericContext instead.
8 years ago
Siegfried Pammer
4cca07aeb3
TransformExpressionTrees: Fix bug in Expression.Quote handling
8 years ago
Siegfried Pammer
e941e7534c
#1182 : TransformExpressionTrees: Remove unused pseudo this-parameter from parameterVariables list.
8 years ago
Siegfried Pammer
5e4b571a62
Add DynamicCallSiteTransform
8 years ago
Daniel Grunwald
0b48439170
Remove dead code from type system (CSharpConstantValue).
8 years ago
Siegfried Pammer
f31d5b4da5
ExpressionTrees: Add support for NewArrayInit with zero length arrays.
8 years ago
Pent Ploompuu
48dc32163e
Reduced allocations
8 years ago
Siegfried Pammer
7cbcdd9f0e
#1049 : add back some decompiler settings
9 years ago