Siegfried Pammer
f956e16f58
Add basic support for C# 4 optional arguments.
8 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.
8 years ago
Siegfried Pammer
19b4aa043c
Fix #1201 : Still getting error: "System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection."
8 years ago
Siegfried Pammer
069e4072de
Fix compile errors after merge.
8 years ago
Daniel Grunwald
db47643a41
Interface implementations in TS
8 years ago
Daniel Grunwald
da06a48851
Implement more of the new metadata TS.
8 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.
8 years ago
Siegfried Pammer
d04155132a
Use overload resolution to add only required casts to collection initializers.
8 years ago
Siegfried Pammer
a823d74004
Use overload resolution to ensure we call the correct indexer + added tests.
8 years ago
Siegfried Pammer
d8e8735ed0
CallBuilder: Extract overload resolution to its own method.
8 years ago
Siegfried Pammer
023282a50d
#1180 : Add IsWindowsFormsInitializeComponentMethod and disable some transforms when processing a Windows Forms InitializeComponent method.
8 years ago
Siegfried Pammer
f2c0f3e70d
Fix bug in CallBuilder.CastArguments: accidentally made *all* casts implicit, which should not happen.
8 years ago
Siegfried Pammer
669dc0ad59
Rewrite dynamic dispatch logic in CallBuilder
8 years ago
Siegfried Pammer
1c7d14dbbf
Add special case for dynamic types in constructor initializer (this/base) calls
8 years ago
Siegfried Pammer
4c2fa36233
Fix merge conflict
8 years ago
Siegfried Pammer
ae018846d6
Implement some dynamic instructions in ExpressionBuilder
8 years ago
Daniel Grunwald
810adea8b4
#1083 : Initial implementation of named arguments.
8 years ago
Daniel Grunwald
5cdd5ecdbc
Use target typing for tuples, where possible.
8 years ago
Daniel Grunwald
92b72c9570
Type system: add support for tuple conversions.
8 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.
8 years ago
Daniel Grunwald
1df05e09e9
Fix base constructor calls.
8 years ago
Daniel Grunwald
d87820e226
Avoid redundant explicit boxing casts
8 years ago
Daniel Grunwald
80e191ae03
Fix missing 'base.' qualifier on non-virtual call to virtual base method.
8 years ago
Chicken-Bones
dc58a1b40c
Include "base." qualifier as needed ( fixes #1123 )
...
Adds BaseReferenceExpression to ThisReferenceExpression target required checks
8 years ago
Siegfried Pammer
61eead50c7
Fix TypeSystemLoaderTests
8 years ago
Siegfried Pammer
75527071ab
Fix redundant qualifiers in method group expressions.
8 years ago
Daniel Grunwald
bd9a7264e8
Fix incorrect resolve result in HandleDelegateConstruction when needsCast=true.
8 years ago
Siegfried Pammer
5dd7eaf129
Fix #1093 : Remove usage of type or this qualifiers, when possible.
8 years ago
Daniel Grunwald
480ddc0c8f
#1055 : Use more type hints in ExpressionBuilder.
8 years ago
Siegfried Pammer
3892762e70
Fix #1053 : virtual protected base method with 'out', invalid cast-to-base on use.
8 years ago
Siegfried Pammer
b28a1719e7
Close #1033 : Add TFM for net45
8 years ago
Siegfried Pammer
1e14c8ffae
Close #1033 : Add TFM for net45
8 years ago
Daniel Grunwald
ca0fa55af8
Implement null propagation transform.
8 years ago
Siegfried Pammer
df04b40951
Fix #990 : Invalid object cast for virtual call through pointer
8 years ago
Siegfried Pammer
25eecb90e1
Rename ExpressionTreeType to DelegateType and use ILFunction.DelegateType instead of the NewObj(LdNull, ILFunction) pattern in DelegateConstruction and ExpressionTrees
8 years ago
Daniel Grunwald
eece44d361
Avoid unnecessary (object) cast when calling myEnum.ToString()
8 years ago
Daniel Grunwald
4c5f0b7e9c
Convert TransformAssignment into a statement transform and add support for inline property assignments.
8 years ago
Daniel Grunwald
dd1c509651
Fix #926 : missing explicit casts for implicit operators
8 years ago
Siegfried Pammer
818a90af95
#918 : CallBuilder: Add fix-up logic for lambda expressions with anonymous parameter types to ensure the correct overload is called after removing the 'implicit' call to 'new Nullable<T>(T value)'.
8 years ago
Daniel Grunwald
9e3fbe68f3
#907 : Avoid unnecessary casts in delegate comparisons.
8 years ago
Siegfried Pammer
c2a7c806f0
Add missing annotations after TranslateFunction
8 years ago
Daniel Grunwald
b7a5924b25
When possible, use implicit method group conversions to construct delegates.
8 years ago
Daniel Grunwald
236c7c28b4
Remove redundant lambda casts.
8 years ago
Siegfried Pammer
e01ee3bf96
CallBuilder: Add support for extension methods capturing the first argument
8 years ago
Daniel Grunwald
af8993f641
Leave off '.Invoke' when calling delegates.
8 years ago
Siegfried Pammer
070307bb73
Move ExpressionBuilder.HandleCallInstruction to CallBuilder.Build.
8 years ago