Daniel Grunwald
ba0a3af3c4
#1195 : Fix several issues decompiling SharpSvn.dll (C++/CLI)
7 years ago
Daniel Grunwald
99f0841dd6
Fix TypeUtils for modopt types.
7 years ago
Daniel Grunwald
dd5845e83d
Support short-circuiting operators with dynamic. (e.g. "if (x.A && x.B)" where "x" is dynamic)
7 years ago
Daniel Grunwald
9479e8af13
Support overloaded operator &&/||.
7 years ago
Siegfried Pammer
3cb2d316a3
Fix #1209 : System.ArgumentException: given Block is invalid!, named arguments in object / collection initializer ctor were not supported.
7 years ago
Daniel Grunwald
107fe5eb1c
Eliminate SpecializingDecompilerTypeSystem and use GenericContext instead.
7 years ago
Daniel Grunwald
796612209d
Fix #1147 : Use C# 7.3 syntax for ref reassignment.
7 years ago
Daniel Grunwald
3b46776c5e
Rename IAssembly -> IModule.
...
While support for multi-module assemblies isn't fully working yet; it is clear at this point that we want
to treat each module in a multi-module assembly separately for the purposes of the type system.
7 years ago
Daniel Grunwald
33ef82f75c
Fix #1082 : Add support for compound assignment with string.Concat().
...
Currently only supports the binary overloads of string.Concat().
7 years ago
Siegfried Pammer
6ca3863c63
Fix #1135 : Redundant constant "&& true" added to decompiled code.
...
Suppress && / || transformation, if rhs is the identity of the operator.
7 years ago
Siegfried Pammer
6096b7df29
#907 : CallBuilder: If type arguments cannot be inferred from the parameter list, add them before asking overload resolution, but remove them again, if it does not reduce the number of casts.
7 years ago
Siegfried Pammer
d04155132a
Use overload resolution to add only required casts to collection initializers.
7 years ago
Siegfried Pammer
cf8bee2c01
Fix translation of generic and extension 'Add' methods in collection initializers.
7 years ago
Siegfried Pammer
904aa5269e
Fix various bugs in ExpressionBuilder.VisitDynamic* + refactor DynamicInstructions a bit
7 years ago
Siegfried Pammer
9d6f864c42
Use DynamicInvocationResolveResult where applicable
7 years ago
Siegfried Pammer
c4f41f459f
Add support for more dynamic binary operators.
7 years ago
Siegfried Pammer
87d5091ac9
Fix translation of DynamicInvokeConstructorInstruction
7 years ago
Siegfried Pammer
b9f14905b2
Fix #1155 : DictionaryInitializers setting not working
7 years ago
Siegfried Pammer
ac706d3735
dynamic: Add special case for type arguments in code generated by csc
7 years ago
Daniel Grunwald
02dde92bcb
Improve use of dynamic expressions in conditional context:
...
Let "operator true" be invoked implicitly where possible.
7 years ago
Siegfried Pammer
675125d6c6
Add support for DynamicInvokeInstruction and DynamicUnaryOperatorInstruction
7 years ago
Siegfried Pammer
ae018846d6
Implement some dynamic instructions in ExpressionBuilder
7 years ago
Daniel Grunwald
810adea8b4
#1083 : Initial implementation of named arguments.
7 years ago
Siegfried Pammer
5e4b571a62
Add DynamicCallSiteTransform
7 years ago
Daniel Grunwald
92b72c9570
Type system: add support for tuple conversions.
7 years ago
Daniel Grunwald
469501210c
Add support for C# 7 tuple types:
...
* Use tuple literals instead of calling 'new ValueTuple<..>' constructor
* Where available, use element names for field access
* Make CallBuilder aware of tuple-name/dynamic type erasure, to avoid introducing casts when the types differ only in the tuple element names.
* Make CallBuilder provide a ResolveResult with the correct C# return type for the resulting expression.
Previously we were using the type-erased return type from the IL.
* Fix a bug that caused us to introduce returning casts when accessing an indexer.
7 years ago
Siegfried Pammer
c53b898b55
Fix #1122 : Error decompiling dictionary initializer referencing parameter variable
7 years ago
Daniel Grunwald
0552b335c9
Implement InferType() for ldelema.
...
This improves decompilation of compound assignment on array elements.
7 years ago
Siegfried Pammer
845c620a9f
Implement UserDefinedCompoundAssign
...
rename CompoundAssignmentInstruction -> NumericCompoundAssign
7 years ago
Chicken-Bones
dc58a1b40c
Include "base." qualifier as needed ( fixes #1123 )
...
Adds BaseReferenceExpression to ThisReferenceExpression target required checks
7 years ago
Daniel Grunwald
ec86ba2dad
Fix some bugs introduced by nested type lazy-loading.
7 years ago
Siegfried Pammer
75527071ab
Fix redundant qualifiers in method group expressions.
7 years ago
Siegfried Pammer
5dd7eaf129
Fix #1093 : Remove usage of type or this qualifiers, when possible.
7 years ago
Daniel Grunwald
b9337c6129
Fix #1021 : Compound assignments on pointer types.
7 years ago
Daniel Grunwald
7c91d48d68
#980 : Fix type substitution for lambdas.
7 years ago
Daniel Grunwald
f4b00e310c
Avoid redundant casts around 'as' conversions of type parameters.
7 years ago
Daniel Grunwald
4d00c65608
Use IReadOnlyList<T> instead of IList<T> in the resolved type system.
7 years ago
Siegfried Pammer
eac591a7d7
Fix #1084 : Decompiling constants of the target type
7 years ago
Siegfried Pammer
704eec86ae
Add basic unit tests for ref returns, locals and conditional
7 years ago
Daniel Grunwald
480ddc0c8f
#1055 : Use more type hints in ExpressionBuilder.
7 years ago
Daniel Grunwald
4177e182fe
#1050 : Add support for ?. operator applied to ref-parameters, and other cases where the compiler uses a generated ref local for the ?. operator.
...
Still not supported: ?. operator applied to a ref to unconstrained generic type.
7 years ago
Siegfried Pammer
3892762e70
Fix #1053 : virtual protected base method with 'out', invalid cast-to-base on use.
7 years ago
Daniel Grunwald
36035de5fa
Improve decompilation of ?. in generic code.
7 years ago
Daniel Grunwald
937b86be68
Fix type of ref-locals when there's ref-assignment involved.
7 years ago
Daniel Grunwald
ca0fa55af8
Implement null propagation transform.
7 years ago
Daniel Grunwald
97efc7b7f5
Fix some value type stack slots incorrectly being decompiled to a variable of type "object".
7 years ago
Daniel Grunwald
ae819526eb
Fix assertion when call has unknown target type (due to missing assembly reference).
8 years ago
Daniel Grunwald
87a03bde70
Add test case for #981 , and fix decompilation of ?: operator on StackType.Ref (necessary to make the testcase compile).
8 years ago
Siegfried Pammer
df04b40951
Fix #990 : Invalid object cast for virtual call through pointer
8 years ago
Siegfried Pammer
33c5e2d3ed
Add StackType.F4 and StackType.F8, and instructions LdcF4 and LdcF8.
8 years ago