diff --git a/src/lang/Nub.Lang/Frontend/Generation/Generator.cs b/src/lang/Nub.Lang/Frontend/Generation/Generator.cs index 3c34824..c32136b 100644 --- a/src/lang/Nub.Lang/Frontend/Generation/Generator.cs +++ b/src/lang/Nub.Lang/Frontend/Generation/Generator.cs @@ -299,25 +299,30 @@ public class Generator { var parameterName = parameter.Name; - // switch (QBEType(parameter.Type)) - // { - // case "sb": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extsb %{parameter.Name}"); - // break; - // case "ub": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extub %{parameter.Name}"); - // break; - // case "sh": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extsh %{parameter.Name}"); - // break; - // case "uh": - // parameterName = GenVarName(); - // _builder.AppendLine($" {parameterName} =w extuh %{parameter.Name}"); - // break; - // } + if (parameter.Type is NubPrimitiveType primitiveType) + { + switch (primitiveType.Kind) + { + case PrimitiveTypeKind.I16: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extsh %{parameter.Name}"); + break; + case PrimitiveTypeKind.I8: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extsb %{parameter.Name}"); + break; + case PrimitiveTypeKind.U16: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extuh %{parameter.Name}"); + break; + case PrimitiveTypeKind.U8: + parameterName = GenVarName(); + _builder.AppendLine($" {parameterName} =w extub %{parameter.Name}"); + break; + default: + throw new ArgumentOutOfRangeException(); + } + } if (IsLargeType(parameter.Type)) {