From a1d952b404436547c79da08938d6abadae4c3a32 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Mon, 18 Mar 2024 05:42:37 -0400 Subject: [PATCH] Reduce else/if chains in EnumParser --- BeefLibs/corlib/src/Enum.bf | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/BeefLibs/corlib/src/Enum.bf b/BeefLibs/corlib/src/Enum.bf index d1f54112..a2d9fe27 100644 --- a/BeefLibs/corlib/src/Enum.bf +++ b/BeefLibs/corlib/src/Enum.bf @@ -423,21 +423,18 @@ namespace System if (var fieldTypeInst = fieldInfo.FieldType as TypeInstance) { bool hasPayload = (fieldTypeInst.IsTuple) && (fieldTypeInst.FieldCount > 0); - if (caseIdx == 0) - code.Append("\t"); - else - code.Append("\telse "); if (!hasPayload) { - code.AppendF($"if (str.Equals(\"{fieldInfo.Name}\", ignoreCase))\n\t\treturn .Ok(.{fieldInfo.Name});\n"); + code.AppendF($"\tif (str.Equals(\"{fieldInfo.Name}\", ignoreCase))\n\t\treturn .Ok(.{fieldInfo.Name});\n"); } - else + else { - code.AppendF($"if (str.StartsWith(\"{fieldInfo.Name}(\", ignoreCase ? .OrdinalIgnoreCase : .Ordinal))\n\t{{\n"); + code.AppendF($"\tif (str.StartsWith(\"{fieldInfo.Name}(\", ignoreCase ? .OrdinalIgnoreCase : .Ordinal))\n\t{{\n"); code.AppendF($"\t\t*({dscrType}*)((uint8*)&result + {dscrOffset}) = {fieldInfo.MemberOffset};\n"); code.AppendF($"\t\tvar itr = Try!(EnumFields(str.Substring({fieldInfo.Name.Length+1})));\n"); for (var tupField in fieldTypeInst.GetFields()) code.AppendF($"\t\tTry!(ParseValue(ref itr, ref *({tupField.FieldType}*)((uint8*)&result + {tupField.MemberOffset})));\n"); + code.Append("\t\treturn result;\n"); code.Append("\t}\n"); } } @@ -445,16 +442,7 @@ namespace System caseIdx++; } - if (caseIdx == 0) - { - code.Append("\treturn .Err;\n"); - } - else - { - code.Append("\telse\n\t\treturn .Err;\n"); - if (hadPayload) - code.Append("\treturn result;\n"); - } + code.Append("\treturn .Err;\n"); code.Append("}\n"); Compiler.EmitTypeBody(typeof(Self), code);