dadhi / dadhi/FastExpressionCompiler
Fix or support return ref value
- Vorherrschende Sprache
- C#
- Sterne
- 1.4k
- Forks
- 94
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
With C#, we can return a ref value:
```
ref Int32 ReturnByRef(ref Int32 x) => ref x;
```
System expression simply says it is not supported
```
System.ArgumentException : Expression of type 'System.Int32' cannot be used for return type 'System.Int32&'
```
LightExpression supports return ref value, but sometimes fails to unref returned ref value.
e.g.
```
Int32 f(ref Int32 x) => ReturnByRef(ref x);
```
emits
```
ldarg.1
call Int32& ReturnRef(Int32 ByRef)
(missing ldind.i4)
ret
```
See the "ReadReturnedRef" test case of attached source file.
[ReturnRef.zip](https://github.com/user-attachments/files/15891456/ReturnRef.zip)
I tried to add a `EmitLoadIndirectlyByRef` after each `Demit(OpCodes.Call)`, which seemed worked.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Bewertung
Dieses Issue wurde noch nicht bewertet.