diff --git a/src/Neo.Compiler.CSharp/MethodConvert/System/SystemCall.Enum.cs b/src/Neo.Compiler.CSharp/MethodConvert/System/SystemCall.Enum.cs index a251c3bf0..d59f7e2cf 100644 --- a/src/Neo.Compiler.CSharp/MethodConvert/System/SystemCall.Enum.cs +++ b/src/Neo.Compiler.CSharp/MethodConvert/System/SystemCall.Enum.cs @@ -350,7 +350,7 @@ private static void HandleEnumIsDefinedByName(MethodConvert methodConvert, Seman var enumMembers = enumTypeSymbol.GetMembers().OfType() .Where(field => field is { HasConstantValue: true, IsImplicitlyDeclared: false }).ToArray(); - + var endTarget = new JumpTarget(); foreach (var t in enumMembers) { methodConvert.Dup(); // Duplicate input name @@ -359,10 +359,9 @@ private static void HandleEnumIsDefinedByName(MethodConvert methodConvert, Seman var nextCheck = new JumpTarget(); methodConvert.JumpIfNot(nextCheck); // If not equal, check next - methodConvert.Drop(); // Remove the duplicated input name methodConvert.Push(true); // Push true (enum name is defined) - methodConvert.Ret(); // Return true + methodConvert.JumpAlways(endTarget); nextCheck.Instruction = methodConvert.Nop(); } @@ -370,7 +369,7 @@ private static void HandleEnumIsDefinedByName(MethodConvert methodConvert, Seman // No match found methodConvert.Drop(); // Remove the input name methodConvert.Push(false); // Push false (enum name is not defined) - methodConvert.Ret(); // Return false + endTarget.Instruction = methodConvert.Nop(); } /// @@ -401,6 +400,7 @@ private static void HandleEnumGetName(MethodConvert methodConvert, SemanticModel var enumMembers = enumTypeSymbol.GetMembers().OfType() .Where(field => field is { HasConstantValue: true, IsImplicitlyDeclared: false }).ToArray(); + var endTarget = new JumpTarget(); foreach (var t in enumMembers) { methodConvert.Dup(); // Duplicate input value @@ -411,7 +411,7 @@ private static void HandleEnumGetName(MethodConvert methodConvert, SemanticModel methodConvert.Drop(); // Remove the duplicated input value methodConvert.Push(t.Name); // Push enum name - methodConvert.Ret(); // Return enum name + methodConvert.JumpAlways(endTarget); nextCheck.Instruction = methodConvert.Nop(); } @@ -419,7 +419,7 @@ private static void HandleEnumGetName(MethodConvert methodConvert, SemanticModel // No match found methodConvert.Drop(); // Remove the input value methodConvert.PushNull(); // Push null (no matching enum name) - methodConvert.Ret(); // Return null + endTarget.Instruction = methodConvert.Nop(); } /// @@ -467,7 +467,7 @@ private static void HandleEnumGetNameWithType(MethodConvert methodConvert, Seman var enumMembers = enumTypeSymbol.GetMembers().OfType() .Where(field => field is { HasConstantValue: true, IsImplicitlyDeclared: false }).ToArray(); - + var endTarget = new JumpTarget(); var valueItem = methodConvert.PopInstruction(); // The second argument is the value to get the name of var enumTypeItem = methodConvert.PopInstruction(); // The first argument is the enum type, It's unused when running methodConvert.AddInstruction(valueItem); @@ -481,7 +481,7 @@ private static void HandleEnumGetNameWithType(MethodConvert methodConvert, Seman methodConvert.Drop(); // Remove the duplicated input value methodConvert.Push(t.Name); // Push enum name - methodConvert.Ret(); // Return enum name + methodConvert.JumpAlways(endTarget); nextCheck.Instruction = methodConvert.Nop(); } @@ -489,7 +489,7 @@ private static void HandleEnumGetNameWithType(MethodConvert methodConvert, Seman // No match found methodConvert.Drop(); // Remove the input value methodConvert.PushNull(); // Push null (no matching enum name) - methodConvert.Ret(); // Return null + endTarget.Instruction = methodConvert.Nop(); } /// @@ -555,17 +555,17 @@ private static void HandleEnumTryParse(MethodConvert methodConvert, SemanticMode methodConvert.JumpIfNot(nextCheck); // If equal: - methodConvert.Drop(2); // Remove the inputString + methodConvert.Drop(2); // Remove the EnumType and inputString methodConvert.Push(t.ConstantValue); // Stack: [..., enumValue] methodConvert.AccessSlot(OpCode.STSFLD, index); // Store enum value in out parameter methodConvert.Push(true); // Stack: [..., true] - methodConvert.Ret(); + methodConvert.JumpAlways(endTarget); nextCheck.Instruction = methodConvert.Nop(); } // No match found - methodConvert.Drop(2); // Remove the inputString + methodConvert.Drop(2); // Remove the EumType and inputString methodConvert.Push(0); // Default enum value methodConvert.AccessSlot(OpCode.STSFLD, index); // Store default value in out parameter methodConvert.Push(false); // Success flag set to false @@ -623,8 +623,6 @@ private static void HandleEnumGetNames(MethodConvert methodConvert, SemanticMode foreach (IFieldSymbol m in enumMembers.Reverse()) // PACK works in a reversed way methodConvert.Push(m.Name); methodConvert.Pack(enumMembers.Length); - - methodConvert.Ret(); } /// @@ -677,8 +675,6 @@ private static void HandleEnumGetValues(MethodConvert methodConvert, SemanticMod foreach (IFieldSymbol m in enumMembers.Reverse()) // PACK works in a reversed way methodConvert.Push(m.ConstantValue); methodConvert.Pack(enumMembers.Length); - - methodConvert.Ret(); } /// @@ -733,7 +729,8 @@ private static void HandleEnumIsDefined(MethodConvert methodConvert, SemanticMod var valueType = model.GetTypeInfo(argument.Expression).Type; // We need to compare the input value against the enum values - var endLabel = new JumpTarget(); + var endTarget = new JumpTarget(); + // here add check logic to verify if valueType is string var isName = valueType is INamedTypeSymbol { Name: "String" }; @@ -756,15 +753,14 @@ private static void HandleEnumIsDefined(MethodConvert methodConvert, SemanticMod methodConvert.JumpIfNot(nextCheck); // If equal, set result to true - methodConvert.Drop(); - methodConvert.Drop(); // Remove the false + methodConvert.Drop(2); // Remove the EnumType and duplicated value methodConvert.Push(true); // Set result to true - methodConvert.Ret(); + methodConvert.JumpAlways(endTarget); nextCheck.Instruction = methodConvert.Nop(); } - methodConvert.Drop(); - methodConvert.Drop(); // Remove the duplicated value + methodConvert.Drop(2); // Remove the EnumType and duplicated value methodConvert.Push(false); + endTarget.Instruction = methodConvert.Nop(); } private static INamedTypeSymbol EnsureEnumTypeArgument(IMethodSymbol symbol, int index, SyntaxNode? errorNode) @@ -794,7 +790,7 @@ private static void HandleEnumToString(MethodConvert methodConvert, SemanticMode throw new CompilationException(symbol, DiagnosticId.InvalidType, "Enum.ToString is only supported on enum values."); var enumMembers = GetEnumFields(enumType); - + var endTarget = new JumpTarget(); foreach (var member in enumMembers) { methodConvert.Dup(); @@ -805,12 +801,13 @@ private static void HandleEnumToString(MethodConvert methodConvert, SemanticMode methodConvert.JumpIfFalse(next); methodConvert.Drop(); methodConvert.Push(member.Name); - methodConvert.Ret(); + methodConvert.JumpAlways(endTarget); next.Instruction = methodConvert.Nop(); } // Fallback to numeric representation methodConvert.CallContractMethod(NativeContract.StdLib.Hash, "itoa", 1, true); + endTarget.Instruction = methodConvert.Nop(); } private static void HandleEnumHasFlag(MethodConvert methodConvert, SemanticModel model, IMethodSymbol symbol, @@ -942,6 +939,7 @@ private static void HandleEnumTryParseGeneric(MethodConvert methodConvert, Seman byte resultSlot = methodConvert.AddAnonymousVariable(); byte successSlot = methodConvert.AddAnonymousVariable(); + var successTarget = new JumpTarget(); methodConvert.Push(0); methodConvert.AccessSlot(OpCode.STLOC, resultSlot); @@ -961,21 +959,16 @@ private static void HandleEnumTryParseGeneric(MethodConvert methodConvert, Seman methodConvert.AccessSlot(OpCode.STLOC, resultSlot); methodConvert.Push(true); methodConvert.AccessSlot(OpCode.STLOC, successSlot); - JumpTarget end = new(); - methodConvert.JumpAlways(end); - end.Instruction = methodConvert.Nop(); - methodConvert.AccessSlot(OpCode.LDLOC, resultSlot); - methodConvert.AccessSlot(OpCode.STSFLD, index); - methodConvert.AccessSlot(OpCode.LDLOC, successSlot); - methodConvert.Ret(); + methodConvert.JumpAlways(successTarget); + next.Instruction = methodConvert.Nop(); } methodConvert.Drop(); + successTarget.Instruction = methodConvert.Nop(); methodConvert.AccessSlot(OpCode.LDLOC, resultSlot); methodConvert.AccessSlot(OpCode.STSFLD, index); methodConvert.AccessSlot(OpCode.LDLOC, successSlot); - methodConvert.Ret(); } private static void HandleEnumTryParseGenericIgnoreCase(MethodConvert methodConvert, SemanticModel model, IMethodSymbol symbol, @@ -1004,7 +997,9 @@ private static void HandleEnumTryParseGenericIgnoreCase(MethodConvert methodConv methodConvert.Push(false); methodConvert.AccessSlot(OpCode.STLOC, successSlot); - JumpTarget skipUpper = new(); + var skipUpper = new JumpTarget(); + var successTarget = new JumpTarget(); + methodConvert.AccessSlot(OpCode.LDLOC, ignoreSlot); methodConvert.JumpIfFalse(skipUpper); ConvertToUpper(methodConvert, preserveInput: true); @@ -1031,21 +1026,16 @@ private static void HandleEnumTryParseGenericIgnoreCase(MethodConvert methodConv methodConvert.AccessSlot(OpCode.STLOC, resultSlot); methodConvert.Push(true); methodConvert.AccessSlot(OpCode.STLOC, successSlot); - JumpTarget end = new(); - methodConvert.JumpAlways(end); - end.Instruction = methodConvert.Nop(); - methodConvert.AccessSlot(OpCode.LDLOC, resultSlot); - methodConvert.AccessSlot(OpCode.STSFLD, index); - methodConvert.AccessSlot(OpCode.LDLOC, successSlot); - methodConvert.Ret(); + methodConvert.JumpAlways(successTarget); + next.Instruction = methodConvert.Nop(); } methodConvert.Drop(); + successTarget.Instruction = methodConvert.Nop(); methodConvert.AccessSlot(OpCode.LDLOC, resultSlot); methodConvert.AccessSlot(OpCode.STSFLD, index); methodConvert.AccessSlot(OpCode.LDLOC, successSlot); - methodConvert.Ret(); } private static void HandleEnumGetValuesGeneric(MethodConvert methodConvert, SemanticModel model, IMethodSymbol symbol, @@ -1058,7 +1048,6 @@ private static void HandleEnumGetValuesGeneric(MethodConvert methodConvert, Sema methodConvert.Push(member.ConstantValue); methodConvert.Pack(members.Length); - methodConvert.Ret(); } private static void HandleEnumGetNamesGeneric(MethodConvert methodConvert, SemanticModel model, IMethodSymbol symbol, @@ -1071,6 +1060,5 @@ private static void HandleEnumGetNamesGeneric(MethodConvert methodConvert, Seman methodConvert.Push(member.Name); methodConvert.Pack(members.Length); - methodConvert.Ret(); } } diff --git a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Enum.cs b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Enum.cs index c7b4bf56c..eb46a469b 100644 --- a/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Enum.cs +++ b/tests/Neo.Compiler.CSharp.UnitTests/TestingArtifacts/Contract_Enum.cs @@ -13,12 +13,12 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti { #region Compiled data - public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Enum"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testEnumParse"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Any"",""offset"":0,""safe"":false},{""name"":""testEnumParseWithContinuation"",""parameters"":[],""returntype"":""Integer"",""offset"":84,""safe"":false},{""name"":""testEnumParseIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Any"",""offset"":1177,""safe"":false},{""name"":""testEnumParseIgnoreCaseFromExpression"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""caseSensitive"",""type"":""Boolean""}],""returntype"":""Any"",""offset"":1347,""safe"":false},{""name"":""testEnumTryParse"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Boolean"",""offset"":1575,""safe"":false},{""name"":""testEnumTryParseIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":1653,""safe"":false},{""name"":""testEnumTryParseIgnoreCaseFromExpression"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""caseSensitive"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":1816,""safe"":false},{""name"":""testEnumGetNames"",""parameters"":[],""returntype"":""Array"",""offset"":1986,""safe"":false},{""name"":""testEnumGetValues"",""parameters"":[],""returntype"":""Array"",""offset"":2023,""safe"":false},{""name"":""testEnumIsDefined"",""parameters"":[{""name"":""value"",""type"":""Any""}],""returntype"":""Boolean"",""offset"":2039,""safe"":false},{""name"":""testEnumIsDefinedByName"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""Boolean"",""offset"":2084,""safe"":false},{""name"":""testEnumGetName"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2150,""safe"":false},{""name"":""testEnumGetNameWithType"",""parameters"":[{""name"":""value"",""type"":""Any""}],""returntype"":""String"",""offset"":2199,""safe"":false},{""name"":""testEnumHasFlag"",""parameters"":[{""name"":""value"",""type"":""Integer""},{""name"":""flag"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":2248,""safe"":false},{""name"":""testEnumToString"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2259,""safe"":false},{""name"":""testEnumToStringUnknown"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2312,""safe"":false},{""name"":""testEnumParseGeneric"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Integer"",""offset"":2365,""safe"":false},{""name"":""testEnumParseGenericIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Integer"",""offset"":2467,""safe"":false},{""name"":""testEnumTryParseGeneric"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Boolean"",""offset"":2613,""safe"":false},{""name"":""testEnumTryParseGenericIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":2696,""safe"":false},{""name"":""testEnumGetValuesGeneric"",""parameters"":[],""returntype"":""Array"",""offset"":2823,""safe"":false},{""name"":""testEnumGetNamesGeneric"",""parameters"":[],""returntype"":""Array"",""offset"":2829,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":2856,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0xacce6fd80d44e1796aa0c2c625e9e4e0ce39efc0"",""methods"":[""itoa""]}],""trusts"":[],""extra"":{""Version"":""3.10.0"",""nef"":{""optimization"":""All""}}}"); + public static Neo.SmartContract.Manifest.ContractManifest Manifest => Neo.SmartContract.Manifest.ContractManifest.Parse(@"{""name"":""Contract_Enum"",""groups"":[],""features"":{},""supportedstandards"":[],""abi"":{""methods"":[{""name"":""testEnumParse"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Any"",""offset"":0,""safe"":false},{""name"":""testEnumParseWithContinuation"",""parameters"":[],""returntype"":""Integer"",""offset"":84,""safe"":false},{""name"":""testEnumParseIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Any"",""offset"":1177,""safe"":false},{""name"":""testEnumParseIgnoreCaseFromExpression"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""caseSensitive"",""type"":""Boolean""}],""returntype"":""Any"",""offset"":1347,""safe"":false},{""name"":""testEnumTryParse"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Boolean"",""offset"":1575,""safe"":false},{""name"":""testEnumTryParseIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":1656,""safe"":false},{""name"":""testEnumTryParseIgnoreCaseFromExpression"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""caseSensitive"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":1819,""safe"":false},{""name"":""testEnumGetNames"",""parameters"":[],""returntype"":""Array"",""offset"":1989,""safe"":false},{""name"":""testEnumGetValues"",""parameters"":[],""returntype"":""Array"",""offset"":2026,""safe"":false},{""name"":""testEnumIsDefined"",""parameters"":[{""name"":""value"",""type"":""Any""}],""returntype"":""Boolean"",""offset"":2042,""safe"":false},{""name"":""testEnumIsDefinedByName"",""parameters"":[{""name"":""name"",""type"":""String""}],""returntype"":""Boolean"",""offset"":2087,""safe"":false},{""name"":""testEnumGetName"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2153,""safe"":false},{""name"":""testEnumGetNameWithType"",""parameters"":[{""name"":""value"",""type"":""Any""}],""returntype"":""String"",""offset"":2202,""safe"":false},{""name"":""testEnumHasFlag"",""parameters"":[{""name"":""value"",""type"":""Integer""},{""name"":""flag"",""type"":""Integer""}],""returntype"":""Boolean"",""offset"":2251,""safe"":false},{""name"":""testEnumToString"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2262,""safe"":false},{""name"":""testEnumToStringUnknown"",""parameters"":[{""name"":""value"",""type"":""Integer""}],""returntype"":""String"",""offset"":2315,""safe"":false},{""name"":""testEnumParseGeneric"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Integer"",""offset"":2368,""safe"":false},{""name"":""testEnumParseGenericIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Integer"",""offset"":2470,""safe"":false},{""name"":""testEnumTryParseGeneric"",""parameters"":[{""name"":""value"",""type"":""String""}],""returntype"":""Boolean"",""offset"":2616,""safe"":false},{""name"":""testEnumTryParseGenericIgnoreCase"",""parameters"":[{""name"":""value"",""type"":""String""},{""name"":""ignoreCase"",""type"":""Boolean""}],""returntype"":""Boolean"",""offset"":2699,""safe"":false},{""name"":""testEnumGetValuesGeneric"",""parameters"":[],""returntype"":""Array"",""offset"":2826,""safe"":false},{""name"":""testEnumGetNamesGeneric"",""parameters"":[],""returntype"":""Array"",""offset"":2832,""safe"":false},{""name"":""_initialize"",""parameters"":[],""returntype"":""Void"",""offset"":2859,""safe"":false}],""events"":[]},""permissions"":[{""contract"":""0xacce6fd80d44e1796aa0c2c625e9e4e0ce39efc0"",""methods"":[""itoa""]}],""trusts"":[],""extra"":{""Version"":""3.10.0"",""nef"":{""optimization"":""All""}}}"); /// /// Optimization: "All" /// - public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"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").AsSerializable(); + public static Neo.SmartContract.NefFile Nef => Convert.FromBase64String(@"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").AsSerializable(); #endregion @@ -291,11 +291,11 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwEBCXg1svz//3BoDAZWYWx1ZTGXJgQRQGgMBlZhbHVlMpcmBBJAaAwGVmFsdWUzlyYEE0AIJhcMEk5vIHN1Y2ggZW51bSB2YWx1ZToMFk5vIHN3aXRjaCBhcm0gbWF0Y2hlZC46 + /// Script: VwEBCXg1r/z//3BoDAZWYWx1ZTGXJgQRQGgMBlZhbHVlMpcmBBJAaAwGVmFsdWUzlyYEE0AIJhcMEk5vIHN1Y2ggZW51bSB2YWx1ZToMFk5vIHN3aXRjaCBhcm0gbWF0Y2hlZC46 /// INITSLOT 0101 [64 datoshi] /// PUSHF [1 datoshi] /// LDARG0 [2 datoshi] - /// CALL_L B2FCFFFF [512 datoshi] + /// CALL_L AFFCFFFF [512 datoshi] /// STLOC0 [2 datoshi] /// LDLOC0 [2 datoshi] /// PUSHDATA1 56616C756531 'Value1' [8 datoshi] @@ -329,11 +329,11 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwICeXg1TPz//3BocWkMBlZBTFVFMZcmBBFAaQwGVkFMVUUylyYEEkBpDAZWQUxVRTOXJgQTQGkMBlZhbHVlMZcmBBFAaQwGVmFsdWUylyYEEkBpDAZWYWx1ZTOXJgQTQAgmFwwSTm8gc3VjaCBlbnVtIHZhbHVlOgwWTm8gc3dpdGNoIGFybSBtYXRjaGVkLjo= + /// Script: VwICeXg1Sfz//3BocWkMBlZBTFVFMZcmBBFAaQwGVkFMVUUylyYEEkBpDAZWQUxVRTOXJgQTQGkMBlZhbHVlMZcmBBFAaQwGVmFsdWUylyYEEkBpDAZWYWx1ZTOXJgQTQAgmFwwSTm8gc3VjaCBlbnVtIHZhbHVlOgwWTm8gc3dpdGNoIGFybSBtYXRjaGVkLjo= /// INITSLOT 0202 [64 datoshi] /// LDARG1 [2 datoshi] /// LDARG0 [2 datoshi] - /// CALL_L 4CFCFFFF [512 datoshi] + /// CALL_L 49FCFFFF [512 datoshi] /// STLOC0 [2 datoshi] /// LDLOC0 [2 datoshi] /// STLOC1 [2 datoshi] @@ -1098,7 +1098,7 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwABDAhUZXN0RW51bXgLYUoMBlZhbHVlMZcmCEVFEWAIQEoMBlZhbHVlMpcmCEVFEmAIQEoMBlZhbHVlM5cmCEVFE2AIQEVFEGAJWGFA + /// Script: VwABDAhUZXN0RW51bXgLYUoMBlZhbHVlMZcmCUVFEWAIIi1KDAZWYWx1ZTKXJglFRRJgCCIaSgwGVmFsdWUzlyYJRUUTYAgiB0VFEGAJWGFA /// INITSLOT 0001 [64 datoshi] /// PUSHDATA1 54657374456E756D 'TestEnum' [8 datoshi] /// LDARG0 [2 datoshi] @@ -1107,33 +1107,33 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// DUP [2 datoshi] /// PUSHDATA1 56616C756531 'Value1' [8 datoshi] /// EQUAL [32 datoshi] - /// JMPIFNOT 08 [2 datoshi] + /// JMPIFNOT 09 [2 datoshi] /// DROP [2 datoshi] /// DROP [2 datoshi] /// PUSH1 [1 datoshi] /// STSFLD0 [2 datoshi] /// PUSHT [1 datoshi] - /// RET [0 datoshi] + /// JMP 2D [2 datoshi] /// DUP [2 datoshi] /// PUSHDATA1 56616C756532 'Value2' [8 datoshi] /// EQUAL [32 datoshi] - /// JMPIFNOT 08 [2 datoshi] + /// JMPIFNOT 09 [2 datoshi] /// DROP [2 datoshi] /// DROP [2 datoshi] /// PUSH2 [1 datoshi] /// STSFLD0 [2 datoshi] /// PUSHT [1 datoshi] - /// RET [0 datoshi] + /// JMP 1A [2 datoshi] /// DUP [2 datoshi] /// PUSHDATA1 56616C756533 'Value3' [8 datoshi] /// EQUAL [32 datoshi] - /// JMPIFNOT 08 [2 datoshi] + /// JMPIFNOT 09 [2 datoshi] /// DROP [2 datoshi] /// DROP [2 datoshi] /// PUSH3 [1 datoshi] /// STSFLD0 [2 datoshi] /// PUSHT [1 datoshi] - /// RET [0 datoshi] + /// JMP 07 [2 datoshi] /// DROP [2 datoshi] /// DROP [2 datoshi] /// PUSH0 [1 datoshi] @@ -1150,11 +1150,11 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwEBCXg1uvv//3BoDAZWYWx1ZTGXJgQIQGgMBlZhbHVlMpcmBAhAaAwGVmFsdWUzlyYECEAIJgQJQAwWTm8gc3dpdGNoIGFybSBtYXRjaGVkLjo= + /// Script: VwEBCXg1t/v//3BoDAZWYWx1ZTGXJgQIQGgMBlZhbHVlMpcmBAhAaAwGVmFsdWUzlyYECEAIJgQJQAwWTm8gc3dpdGNoIGFybSBtYXRjaGVkLjo= /// INITSLOT 0101 [64 datoshi] /// PUSHF [1 datoshi] /// LDARG0 [2 datoshi] - /// CALL_L BAFBFFFF [512 datoshi] + /// CALL_L B7FBFFFF [512 datoshi] /// STLOC0 [2 datoshi] /// LDLOC0 [2 datoshi] /// PUSHDATA1 56616C756531 'Value1' [8 datoshi] @@ -1188,11 +1188,11 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwICeXg1Z/v//3BocWkMBlZBTFVFMZcmBAhAaQwGVkFMVUUylyYECEBpDAZWQUxVRTOXJgQIQGkMBlZhbHVlMZcmBAhAaQwGVmFsdWUylyYECEBpDAZWYWx1ZTOXJgQIQAgmBAlADBZObyBzd2l0Y2ggYXJtIG1hdGNoZWQuOg== + /// Script: VwICeXg1ZPv//3BocWkMBlZBTFVFMZcmBAhAaQwGVkFMVUUylyYECEBpDAZWQUxVRTOXJgQIQGkMBlZhbHVlMZcmBAhAaQwGVmFsdWUylyYECEBpDAZWYWx1ZTOXJgQIQAgmBAlADBZObyBzd2l0Y2ggYXJtIG1hdGNoZWQuOg== /// INITSLOT 0202 [64 datoshi] /// LDARG1 [2 datoshi] /// LDARG0 [2 datoshi] - /// CALL_L 67FBFFFF [512 datoshi] + /// CALL_L 64FBFFFF [512 datoshi] /// STLOC0 [2 datoshi] /// LDLOC0 [2 datoshi] /// STLOC1 [2 datoshi] @@ -1343,12 +1343,12 @@ public abstract class Contract_Enum(Neo.SmartContract.Testing.SmartContractIniti /// Unsafe method /// /// - /// Script: VwICDAhUZXN0RW51bQl4Nc3+//95qgtkSnAmK3EMABBKacouH0ppUM5KAGEAe7skCVFQi1CcIuoAIJ9RUItQnCLgRdsoRkpoJgwMBlZBTFVFMSIKDAZWYWx1ZTGXJghFEWIIIkRKaCYMDAZWQUxVRTIiCgwGVmFsdWUylyYIRRJiCCIlSmgmDAwGVkFMVUUzIgoMBlZhbHVlM5cmCEUTYggiBkUQYglaZEA= + /// Script: VwICDAhUZXN0RW51bQl4Ncr+//95qgtkSnAmK3EMABBKacouH0ppUM5KAGEAe7skCVFQi1CcIuoAIJ9RUItQnCLgRdsoRkpoJgwMBlZBTFVFMSIKDAZWYWx1ZTGXJghFEWIIIkRKaCYMDAZWQUxVRTIiCgwGVmFsdWUylyYIRRJiCCIlSmgmDAwGVkFMVUUzIgoMBlZhbHVlM5cmCEUTYggiBkUQYglaZEA= /// INITSLOT 0202 [64 datoshi] /// PUSHDATA1 54657374456E756D 'TestEnum' [8 datoshi] /// PUSHF [1 datoshi] /// LDARG0 [2 datoshi] - /// CALL_L CDFEFFFF [512 datoshi] + /// CALL_L CAFEFFFF [512 datoshi] /// LDARG1 [2 datoshi] /// NOT [4 datoshi] /// PUSHNULL [1 datoshi]