Search Unity

Bug AotStubs.cs Error. Method_In(in float val) => Method_In(ref arg0)

Discussion in 'Visual Scripting' started by Sarono, Feb 21, 2023.

  1. Sarono

    Sarono

    Joined:
    Apr 12, 2018
    Posts:
    8
    version: 1.8.0

    Code (CSharp):
    1.  
    2.     // ======================================================================
    3.     // MyCode.cs
    4.  
    5.     [Unity.VisualScripting.IncludeInSettings(true)]
    6.     public class MyCode
    7.     {
    8.         public static void Method_In(in float val) { }
    9.  
    10.         public static void Method_Ref(ref float val) { }
    11.     }
    12.  
    13.  
    14.     // ======================================================================
    15.     // AotStubs.cs
    16.     //...
    17.     [global::UnityEngine.Scripting.PreserveAttribute()]
    18.     public static void Souls_Assets_Scripts_Gameplay_VisualScripting_MyCode_Method_In()
    19.     {
    20.         float arg0 = default(float);
    21.         global::Souls.Assets.Scripts.Gameplay.VisualScripting.MyCode.Method_In(ref arg0); // error!
    22.         global::Unity.VisualScripting.ReflectionInvoker optimized = new global::Unity.VisualScripting.ReflectionInvoker(default(global::System.Reflection.MethodInfo));
    23.         optimized.Invoke(default(object[]));
    24.     }
    25.  
    26.  
    27.     // ======================================================================
    28.     // MethodInfoStubWriter.cs
    29.     // ...
    30.  
    31.     // arg0 = default(string)
    32.     // arg1 = default(Color)
    33.     yield return new CodeVariableDeclarationStatement(parameterType, argumentName, new CodeDefaultValueExpression(parameterType));
    34.  
    35.     FieldDirection direction;
    36.  
    37.     if (parameterInfo.HasOutModifier())
    38.     {
    39.         direction = FieldDirection.Out;
    40.         includesOutOrRef = true;
    41.     }
    42.     else if (parameterInfo.ParameterType.IsByRef) // error
    43.     // else if(parameterInfo.ParameterType.IsByRef && !parameterInfo.IsIn)
    44.     {
    45.         direction = FieldDirection.Ref;
    46.         includesOutOrRef = true;
    47.     }
    48.     else
    49.     {
    50.         direction = FieldDirection.In;
    51.     }
    52.  
    53.     var argument = new CodeDirectionExpression(direction, new CodeVariableReferenceExpression(argumentName));
    54.  
    55.     arguments.Add(argument);
    56.  
    57.     //...
    58.            
    59.  
     
  2. PanthenEye

    PanthenEye

    Joined:
    Oct 14, 2013
    Posts:
    2,063