Siegfried Pammer
7c6f7fea05
Make sure that there is only one applicable implicit conversion when dealing with switch, otherwise use an explicit cast.
7 months ago
Siegfried Pammer
e4285b751b
Fix build.
7 months ago
Siegfried Pammer
efbefd0d3b
Fix #3361 : switch-value conversion was losing its target type.
7 months ago
Siegfried Pammer
9548a11d37
Use ILSpyHelper_AsRefReadOnly to ensure that overload resolution can pick the correct overload using 'in'.
1 year ago
Siegfried Pammer
972354913e
Fix #3209 : Ensure using directives are added for extension methods in higher level patterns such as: foreach -> GetEnumerator(), collection initializer -> Add() and deconstruction -> Deconstruct().
1 year ago
Siegfried Pammer
eae54ddf24
Fix #3014 : Missing type information in lambda expressions.
2 years ago
Siegfried Pammer
70616b301c
Implement support for C# 11 switch on (ReadOnly)Span<char>.
2 years ago
Siegfried Pammer
a3191f19e2
Fix #2763 : Improve decompilation of switch-on-enum by preserving enum type information when inlining local variables into SwitchInstruction.Value.
3 years ago
Siegfried Pammer
5f324de10b
Add support for ref fields.
3 years ago
Siegfried Pammer
5f73bfbb01
Fix Deconstruction for Deconstruct instance methods of value-types.
3 years ago
Daniel Grunwald
2419c2641a
StatementBuilder.TransformToForeach: allow both `break;` and `return;` within the using body
4 years ago
Siegfried Pammer
8fc64669c2
Add annotations on local function parameter declarations
4 years ago
Siegfried Pammer
bf8166d045
Fix #2291 : block container end labels should be unique as well.
4 years ago
Siegfried Pammer
f29205448b
Fix #2283 : Disallow all implicit conversions in switch on string.
5 years ago
Siegfried Pammer
63ca748b9a
Fix #2283 : string.to.int instruction entails a conversion to string of the input value
5 years ago
Daniel Grunwald
54231edb4b
Fix #2189 : Invalid C# generated when pinning an unmanaged pointer.
C# has some special rules for allowed expressions inside a fixed statement.
In the non-allowed cases, emit an `Unsafe.AsRef()` call to prevent compiler errors.
5 years ago
Siegfried Pammer
b7d2eec41d
#2199 : Add support for VB cached delegate initialization
5 years ago
Siegfried Pammer
d3b0e4cd72
Fix #2196 : Add support for extern local functions.
5 years ago
Siegfried Pammer
4e07c952ab
Fix #2195 : foreach loop conversion accidentally removes end container label.
5 years ago
Siegfried Pammer
e7cb27a134
Fix #2182 : Ensure that all labels generated by StatementBuilder are unique.
5 years ago
Siegfried Pammer
813cd1842f
#2156 : Enforce string type of string.to.int argument.
5 years ago
Siegfried Pammer
13636c89cc
Add support for C# 9: foreach with GetEnumerator extension methods.
5 years ago
dotnet format
0d9f871a4f
#2128 : Reformat the whole code base.
5 years ago
Siegfried Pammer
562699fc94
Add support for C# 8.0 await foreach
5 years ago
Siegfried Pammer
b1b49b5a56
Fix bugs in foreach deconstruction and deconstruction declaration, if the same variable is used multiple times.
5 years ago
Siegfried Pammer
3390d3849d
Added support for `var (a, b, _) = ...;` syntax in deconstruction.
5 years ago
Siegfried Pammer
dab70964a5
Add support for C# 8.0 disposable ref structs
5 years ago
Siegfried Pammer
c9f5e5dd33
Refactor ForeachStatement to support deconstruction
5 years ago
Daniel Grunwald
abb9d49a0f
Add support for C# 8 switch expressions.
5 years ago
Siegfried Pammer
18ace00266
Refactor LocalFunctionDeclarationStatement + LocalFunctionMethod
5 years ago
Daniel Grunwald
35c405b973
Translate the initializer of a `fixed` statement as managed reference and only apply the ref-to-pointer conversion at the end.
This way we create compilable code when the pinned variable type does not match the initializer type.
5 years ago
Siegfried Pammer
9f0ca09e56
Fix #2033 : Wrong place for variable declaration.
5 years ago
Siegfried Pammer
8925b4ff7b
Inline variable declarations/modernize parts of our code base.
5 years ago
Siegfried Pammer
ba5c645257
Add TryCatchHandler annotation to CatchClause
5 years ago
Siegfried Pammer
e748e71b56
Implement workaround for #1961
5 years ago
Siegfried Pammer
5d622056a1
Add TranslatedStatement: require that C# statements must be annotated with their corresponding ILInstructions.
5 years ago
Siegfried Pammer
b953d6e8d0
Fix potential NRE in StatementBuilder.TryCatch
6 years ago
Siegfried Pammer
9e89384916
Make NumberOfCompilerGeneratedGenerics immutable and rename to NumberOfCompilerGeneratedTypeParameters
6 years ago
Daniel Grunwald
eb2a9e6b94
#1852 : Rename array.to.pointer opcode to get.pinnable.reference.
6 years ago
SilverFox
5e6fecebf5
Rework support for generic local function, and fix tests `LocalFunctions.Generic.Test_CaptureT` and `LocalFunctions.Generic.TestGenericArgs`
6 years ago
SilverFox
6409fe945c
Add support for static local function
6 years ago
SilverFox
f039705704
Add support for generic local function
6 years ago
Siegfried Pammer
64b9511aca
#1749 : Represent multi-instruction BlockContainers in expression-context as inlined delegate invocation.
6 years ago
David Wengier
e30e08a59d
The resource expression is always needed regardless of the setting.
6 years ago
David Wengier
3aebec96f5
Fix NullReferenceException when foreach decompilation is turned off
6 years ago
Daniel Grunwald
80cb24d180
Fix #1709 : NullPropagationTransform.IsGetter on generic types
6 years ago
Siegfried Pammer
c7f98a4db7
Add support for await using statements.
6 years ago
Daniel Grunwald
c56714c607
Fix assertion with async lambdas; fix async local functions.
6 years ago
Daniel Grunwald
0a54a93be0
Relax foreach transform to allow stack slots as foreach-variable again.
6 years ago
Daniel Grunwald
856cedc95e
#1456 : add test case; add additional checks to ensure we only transform normal locals into using/foreach-locals
6 years ago