Remove redundant format strings

This commit is contained in:
nub31
2025-06-02 22:05:19 +02:00
parent 1924035f56
commit eca1905672

View File

@@ -373,7 +373,7 @@ public class Generator
_variables[parameter.Name] = new Variable _variables[parameter.Name] = new Variable
{ {
Pointer = $"{pointerName}", Pointer = pointerName,
Type = parameter.Type Type = parameter.Type
}; };
} }
@@ -524,10 +524,10 @@ public class Generator
var result = GenerateExpression(ifStatement.Condition); var result = GenerateExpression(ifStatement.Condition);
_builder.AppendLine($" jnz {result}, {trueLabel}, {falseLabel}"); _builder.AppendLine($" jnz {result}, {trueLabel}, {falseLabel}");
_builder.AppendLine($"{trueLabel}"); _builder.AppendLine(trueLabel);
GenerateBlock(ifStatement.Body); GenerateBlock(ifStatement.Body);
_builder.AppendLine($" jmp {endLabel}"); _builder.AppendLine($" jmp {endLabel}");
_builder.AppendLine($"{falseLabel}"); _builder.AppendLine(falseLabel);
if (ifStatement.Else.HasValue) if (ifStatement.Else.HasValue)
{ {
ifStatement.Else.Value.Match ifStatement.Else.Value.Match
@@ -537,7 +537,7 @@ public class Generator
); );
} }
_builder.AppendLine($"{endLabel}"); _builder.AppendLine(endLabel);
} }
private void GenerateMemberAssignment(MemberAssignmentNode memberAssignment) private void GenerateMemberAssignment(MemberAssignmentNode memberAssignment)
@@ -612,7 +612,7 @@ public class Generator
_variables[variableDeclaration.Name] = new Variable _variables[variableDeclaration.Name] = new Variable
{ {
Pointer = $"{pointerName}", Pointer = pointerName,
Type = type Type = type
}; };
} }
@@ -627,12 +627,12 @@ public class Generator
_continueLabels.Push(conditionLabel); _continueLabels.Push(conditionLabel);
_builder.AppendLine($" jmp {conditionLabel}"); _builder.AppendLine($" jmp {conditionLabel}");
_builder.AppendLine($"{iterationLabel}"); _builder.AppendLine(iterationLabel);
GenerateBlock(whileStatement.Body); GenerateBlock(whileStatement.Body);
_builder.AppendLine($"{conditionLabel}"); _builder.AppendLine(conditionLabel);
var result = GenerateExpression(whileStatement.Condition); var result = GenerateExpression(whileStatement.Condition);
_builder.AppendLine($" jnz {result}, {iterationLabel}, {endLabel}"); _builder.AppendLine($" jnz {result}, {iterationLabel}, {endLabel}");
_builder.AppendLine($"{endLabel}"); _builder.AppendLine(endLabel);
_continueLabels.Pop(); _continueLabels.Pop();
_breakLabels.Pop(); _breakLabels.Pop();
@@ -676,13 +676,13 @@ public class Generator
if (IsLargeType(arrayType)) if (IsLargeType(arrayType))
{ {
return $"{resultPointerName}"; return resultPointerName;
} }
else else
{ {
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} {QBEAssign(arrayType)} {QBELoad(arrayType)} {resultPointerName}"); _builder.AppendLine($" {outputName} {QBEAssign(arrayType)} {QBELoad(arrayType)} {resultPointerName}");
return $"{outputName}"; return outputName;
} }
} }
@@ -704,10 +704,10 @@ public class Generator
var notOobLabel = GenLabelName(); var notOobLabel = GenLabelName();
_builder.AppendLine($" jnz {anyOobName}, {oobLabel}, {notOobLabel}"); _builder.AppendLine($" jnz {anyOobName}, {oobLabel}, {notOobLabel}");
_builder.AppendLine($"{oobLabel}"); _builder.AppendLine(oobLabel);
_builder.AppendLine($" call $nub_panic(l $oob_message, l {OutOfBoundsMessage.Length})"); _builder.AppendLine($" call $nub_panic(l $oob_message, l {OutOfBoundsMessage.Length})");
_builder.AppendLine($"{notOobLabel}"); _builder.AppendLine(notOobLabel);
} }
private string GenerateArrayInitializer(ArrayInitializerNode arrayInitializer) private string GenerateArrayInitializer(ArrayInitializerNode arrayInitializer)
@@ -725,7 +725,7 @@ public class Generator
_builder.AppendLine($" {dataPtr} =l add {outputName}, 8"); _builder.AppendLine($" {dataPtr} =l add {outputName}, 8");
_builder.AppendLine($" call $nub_memset(l {dataPtr}, w 0, l {capacityInBytes})"); _builder.AppendLine($" call $nub_memset(l {dataPtr}, w 0, l {capacityInBytes})");
return $"{outputName}"; return outputName;
} }
private string GenerateDereference(DereferenceNode dereference) private string GenerateDereference(DereferenceNode dereference)
@@ -733,7 +733,7 @@ public class Generator
var result = GenerateExpression(dereference.Expression); var result = GenerateExpression(dereference.Expression);
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} {QBEAssign(dereference.Type)} {QBELoad(dereference.Type)} {result}"); _builder.AppendLine($" {outputName} {QBEAssign(dereference.Type)} {QBELoad(dereference.Type)} {result}");
return $"{outputName}"; return outputName;
} }
private string GenerateAddressOf(AddressOfNode addressOf) private string GenerateAddressOf(AddressOfNode addressOf)
@@ -750,7 +750,7 @@ public class Generator
case NubPrimitiveType { Kind: PrimitiveTypeKind.U64 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.U64 }:
_builder.AppendLine($" {outputName} =l alloc8 8"); _builder.AppendLine($" {outputName} =l alloc8 8");
_builder.AppendLine($" storel {result}, {outputName}"); _builder.AppendLine($" storel {result}, {outputName}");
return $"{outputName}"; return outputName;
case NubPrimitiveType { Kind: PrimitiveTypeKind.I32 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.I32 }:
case NubPrimitiveType { Kind: PrimitiveTypeKind.U32 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.U32 }:
case NubPrimitiveType { Kind: PrimitiveTypeKind.I16 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.I16 }:
@@ -760,7 +760,7 @@ public class Generator
case NubPrimitiveType { Kind: PrimitiveTypeKind.F32 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.F32 }:
_builder.AppendLine($" {outputName} =l alloc8 4"); _builder.AppendLine($" {outputName} =l alloc8 4");
_builder.AppendLine($" storew {result}, {outputName}"); _builder.AppendLine($" storew {result}, {outputName}");
return $"{outputName}"; return outputName;
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
} }
@@ -779,25 +779,25 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w ceql {left}, {right}"); _builder.AppendLine($" {outputName} =w ceql {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w ceqw {left}, {right}"); _builder.AppendLine($" {outputName} =w ceqw {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.String)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.String))
{ {
_builder.AppendLine($" {outputName} =w call $nub_strcmp(l {left}, l {right})"); _builder.AppendLine($" {outputName} =w call $nub_strcmp(l {left}, l {right})");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w ceqw {left}, {right}"); _builder.AppendLine($" {outputName} =w ceqw {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -807,26 +807,26 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w cnel {left}, {right}"); _builder.AppendLine($" {outputName} =w cnel {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w cnew {left}, {right}"); _builder.AppendLine($" {outputName} =w cnew {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.String)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.String))
{ {
_builder.AppendLine($" {outputName} =w call $nub_strcmp(l {left}, l {right})"); _builder.AppendLine($" {outputName} =w call $nub_strcmp(l {left}, l {right})");
_builder.AppendLine($" {outputName} =w xor {outputName}, 1"); _builder.AppendLine($" {outputName} =w xor {outputName}, 1");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w cnew {left}, {right}"); _builder.AppendLine($" {outputName} =w cnew {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -836,19 +836,19 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w csgtl {left}, {right}"); _builder.AppendLine($" {outputName} =w csgtl {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w csgtw {left}, {right}"); _builder.AppendLine($" {outputName} =w csgtw {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w csgtw {left}, {right}"); _builder.AppendLine($" {outputName} =w csgtw {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -858,19 +858,19 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w csgel {left}, {right}"); _builder.AppendLine($" {outputName} =w csgel {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w csgew {left}, {right}"); _builder.AppendLine($" {outputName} =w csgew {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w csgew {left}, {right}"); _builder.AppendLine($" {outputName} =w csgew {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -880,19 +880,19 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w csltl {left}, {right}"); _builder.AppendLine($" {outputName} =w csltl {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w csltw {left}, {right}"); _builder.AppendLine($" {outputName} =w csltw {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w csltw {left}, {right}"); _builder.AppendLine($" {outputName} =w csltw {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -902,19 +902,19 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =w cslel {left}, {right}"); _builder.AppendLine($" {outputName} =w cslel {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w cslew {left}, {right}"); _builder.AppendLine($" {outputName} =w cslew {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.Bool))
{ {
_builder.AppendLine($" {outputName} =w cslew {left}, {right}"); _builder.AppendLine($" {outputName} =w cslew {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -924,13 +924,13 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =l add {left}, {right}"); _builder.AppendLine($" {outputName} =l add {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w add {left}, {right}"); _builder.AppendLine($" {outputName} =w add {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -940,13 +940,13 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =l sub {left}, {right}"); _builder.AppendLine($" {outputName} =l sub {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w sub {left}, {right}"); _builder.AppendLine($" {outputName} =w sub {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -956,13 +956,13 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =l mul {left}, {right}"); _builder.AppendLine($" {outputName} =l mul {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w mul {left}, {right}"); _builder.AppendLine($" {outputName} =w mul {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -972,13 +972,13 @@ public class Generator
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I64))
{ {
_builder.AppendLine($" {outputName} =l div {left}, {right}"); _builder.AppendLine($" {outputName} =l div {left}, {right}");
return $"{outputName}"; return outputName;
} }
if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32)) if (binaryExpression.Left.Type.Equals(NubPrimitiveType.I32))
{ {
_builder.AppendLine($" {outputName} =w div {left}, {right}"); _builder.AppendLine($" {outputName} =w div {left}, {right}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -1027,13 +1027,13 @@ public class Generator
return input; return input;
case PrimitiveTypeKind.F64: case PrimitiveTypeKind.F64:
_builder.AppendLine($" {outputName} =d sltof {input}"); _builder.AppendLine($" {outputName} =d sltof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
_builder.AppendLine($" {outputName} =s sltof {input}"); _builder.AppendLine($" {outputName} =s sltof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_i64_to_string(l {input})"); _builder.AppendLine($" {outputName} =l call $nub_i64_to_string(l {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported"); throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported");
@@ -1044,7 +1044,7 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extsw {input}"); _builder.AppendLine($" {outputName} =l extsw {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
@@ -1056,17 +1056,17 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extsw {input}"); _builder.AppendLine($" {extName} =l extsw {input}");
_builder.AppendLine($" {outputName} =d sltof {extName}"); _builder.AppendLine($" {outputName} =d sltof {extName}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
_builder.AppendLine($" {outputName} =s swtof {input}"); _builder.AppendLine($" {outputName} =s swtof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {input})"); _builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
var extAnyName = GenVarName(); var extAnyName = GenVarName();
_builder.AppendLine($" {extAnyName} =l extsw {input}"); _builder.AppendLine($" {extAnyName} =l extsw {input}");
return $"{extAnyName}"; return extAnyName;
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported"); throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported");
@@ -1077,11 +1077,11 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extsh {input}"); _builder.AppendLine($" {outputName} =l extsh {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
_builder.AppendLine($" {outputName} =w extsh {input}"); _builder.AppendLine($" {outputName} =w extsh {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
@@ -1092,27 +1092,27 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extsh {input}"); _builder.AppendLine($" {extName} =l extsh {input}");
_builder.AppendLine($" {outputName} =d sltof {extName}"); _builder.AppendLine($" {outputName} =d sltof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extsh {input}"); _builder.AppendLine($" {extName} =w extsh {input}");
_builder.AppendLine($" {outputName} =s swtof {extName}"); _builder.AppendLine($" {outputName} =s swtof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extsh {input}"); _builder.AppendLine($" {extName} =w extsh {input}");
_builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {extName})"); _builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {extName})");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extsh {input}"); _builder.AppendLine($" {extName} =l extsh {input}");
return $"{extName}"; return extName;
} }
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
@@ -1124,13 +1124,13 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extsb {input}"); _builder.AppendLine($" {outputName} =l extsb {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
_builder.AppendLine($" {outputName} =w extsb {input}"); _builder.AppendLine($" {outputName} =w extsb {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
case PrimitiveTypeKind.U8: case PrimitiveTypeKind.U8:
return input; return input;
@@ -1139,27 +1139,27 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extsb {input}"); _builder.AppendLine($" {extName} =l extsb {input}");
_builder.AppendLine($" {outputName} =d sltof {extName}"); _builder.AppendLine($" {outputName} =d sltof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extsb {input}"); _builder.AppendLine($" {extName} =w extsb {input}");
_builder.AppendLine($" {outputName} =s swtof {extName}"); _builder.AppendLine($" {outputName} =s swtof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extsb {input}"); _builder.AppendLine($" {extName} =w extsb {input}");
_builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {extName})"); _builder.AppendLine($" {outputName} =l call $nub_i32_to_string(w {extName})");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extsb {input}"); _builder.AppendLine($" {extName} =l extsb {input}");
return $"{extName}"; return extName;
} }
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
@@ -1179,13 +1179,13 @@ public class Generator
return input; return input;
case PrimitiveTypeKind.F64: case PrimitiveTypeKind.F64:
_builder.AppendLine($" {outputName} =d ultof {input}"); _builder.AppendLine($" {outputName} =d ultof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
_builder.AppendLine($" {outputName} =s ultof {input}"); _builder.AppendLine($" {outputName} =s ultof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_u64_to_string(l {input})"); _builder.AppendLine($" {outputName} =l call $nub_u64_to_string(l {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
return input; return input;
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
@@ -1198,7 +1198,7 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extuw {input}"); _builder.AppendLine($" {outputName} =l extuw {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
@@ -1210,17 +1210,17 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extuw {input}"); _builder.AppendLine($" {extName} =l extuw {input}");
_builder.AppendLine($" {outputName} =d ultof {extName}"); _builder.AppendLine($" {outputName} =d ultof {extName}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
_builder.AppendLine($" {outputName} =s uwtof {input}"); _builder.AppendLine($" {outputName} =s uwtof {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {input})"); _builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
var extAnyName = GenVarName(); var extAnyName = GenVarName();
_builder.AppendLine($" {extAnyName} =l extuw {input}"); _builder.AppendLine($" {extAnyName} =l extuw {input}");
return $"{extAnyName}"; return extAnyName;
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported"); throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported");
@@ -1231,11 +1231,11 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extuh {input}"); _builder.AppendLine($" {outputName} =l extuh {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
_builder.AppendLine($" {outputName} =w extuh {input}"); _builder.AppendLine($" {outputName} =w extuh {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
@@ -1246,27 +1246,27 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extuh {input}"); _builder.AppendLine($" {extName} =l extuh {input}");
_builder.AppendLine($" {outputName} =d ultof {extName}"); _builder.AppendLine($" {outputName} =d ultof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extuh {input}"); _builder.AppendLine($" {extName} =w extuh {input}");
_builder.AppendLine($" {outputName} =s uwtof {extName}"); _builder.AppendLine($" {outputName} =s uwtof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extuh {input}"); _builder.AppendLine($" {extName} =w extuh {input}");
_builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {extName})"); _builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {extName})");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extuh {input}"); _builder.AppendLine($" {extName} =l extuh {input}");
return $"{extName}"; return extName;
} }
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
@@ -1278,13 +1278,13 @@ public class Generator
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l extub {input}"); _builder.AppendLine($" {outputName} =l extub {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
_builder.AppendLine($" {outputName} =w extub {input}"); _builder.AppendLine($" {outputName} =w extub {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
case PrimitiveTypeKind.U8: case PrimitiveTypeKind.U8:
return input; return input;
@@ -1293,27 +1293,27 @@ public class Generator
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extub {input}"); _builder.AppendLine($" {extName} =l extub {input}");
_builder.AppendLine($" {outputName} =d ultof {extName}"); _builder.AppendLine($" {outputName} =d ultof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extub {input}"); _builder.AppendLine($" {extName} =w extub {input}");
_builder.AppendLine($" {outputName} =s uwtof {extName}"); _builder.AppendLine($" {outputName} =s uwtof {extName}");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =w extub {input}"); _builder.AppendLine($" {extName} =w extub {input}");
_builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {extName})"); _builder.AppendLine($" {outputName} =l call $nub_u32_to_string(w {extName})");
return $"{outputName}"; return outputName;
} }
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
{ {
var extName = GenVarName(); var extName = GenVarName();
_builder.AppendLine($" {extName} =l extub {input}"); _builder.AppendLine($" {extName} =l extub {input}");
return $"{extName}"; return extName;
} }
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
@@ -1327,26 +1327,26 @@ public class Generator
return input; return input;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
_builder.AppendLine($" {outputName} =s dtos {input}"); _builder.AppendLine($" {outputName} =s dtos {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
_builder.AppendLine($" {outputName} =l dtosi {input}"); _builder.AppendLine($" {outputName} =l dtosi {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
_builder.AppendLine($" {outputName} =w dtosi {input}"); _builder.AppendLine($" {outputName} =w dtosi {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l dtoui {input}"); _builder.AppendLine($" {outputName} =l dtoui {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
case PrimitiveTypeKind.U8: case PrimitiveTypeKind.U8:
_builder.AppendLine($" {outputName} =w dtoui {input}"); _builder.AppendLine($" {outputName} =w dtoui {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_f64_to_string(d {input})"); _builder.AppendLine($" {outputName} =l call $nub_f64_to_string(d {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
default: default:
throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported"); throw new NotSupportedException($"Casting from {primitiveInputType.Kind} to {primitiveOutputType.Kind} is not supported");
@@ -1356,28 +1356,28 @@ public class Generator
{ {
case PrimitiveTypeKind.F64: case PrimitiveTypeKind.F64:
_builder.AppendLine($" {outputName} =d stod {input}"); _builder.AppendLine($" {outputName} =d stod {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.F32: case PrimitiveTypeKind.F32:
return input; return input;
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
_builder.AppendLine($" {outputName} =l stosi {input}"); _builder.AppendLine($" {outputName} =l stosi {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
case PrimitiveTypeKind.I8: case PrimitiveTypeKind.I8:
_builder.AppendLine($" {outputName} =w stosi {input}"); _builder.AppendLine($" {outputName} =w stosi {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.U64: case PrimitiveTypeKind.U64:
_builder.AppendLine($" {outputName} =l stoui {input}"); _builder.AppendLine($" {outputName} =l stoui {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.U32: case PrimitiveTypeKind.U32:
case PrimitiveTypeKind.U16: case PrimitiveTypeKind.U16:
case PrimitiveTypeKind.U8: case PrimitiveTypeKind.U8:
_builder.AppendLine($" {outputName} =w stoui {input}"); _builder.AppendLine($" {outputName} =w stoui {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_f32_to_string(s {input})"); _builder.AppendLine($" {outputName} =l call $nub_f32_to_string(s {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
throw new NotImplementedException(); throw new NotImplementedException();
case PrimitiveTypeKind.Bool: case PrimitiveTypeKind.Bool:
@@ -1391,10 +1391,10 @@ public class Generator
return input; return input;
case PrimitiveTypeKind.Any: case PrimitiveTypeKind.Any:
_builder.AppendLine($" {outputName} =l extsw {input}"); _builder.AppendLine($" {outputName} =l extsw {input}");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.String: case PrimitiveTypeKind.String:
_builder.AppendLine($" {outputName} =l call $nub_bool_to_string(s {input})"); _builder.AppendLine($" {outputName} =l call $nub_bool_to_string(s {input})");
return $"{outputName}"; return outputName;
case PrimitiveTypeKind.I64: case PrimitiveTypeKind.I64:
case PrimitiveTypeKind.I32: case PrimitiveTypeKind.I32:
case PrimitiveTypeKind.I16: case PrimitiveTypeKind.I16:
@@ -1446,7 +1446,7 @@ public class Generator
{ {
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} {QBEAssign(identifier.Type)} {QBELoad(identifier.Type)} {variable.Pointer}"); _builder.AppendLine($" {outputName} {QBEAssign(identifier.Type)} {QBELoad(identifier.Type)} {variable.Pointer}");
return $"{outputName}"; return outputName;
} }
} }
@@ -1526,7 +1526,7 @@ public class Generator
} }
} }
return $"{structVar}"; return structVar;
} }
private string GenerateUnaryExpression(UnaryExpressionNode unaryExpression) private string GenerateUnaryExpression(UnaryExpressionNode unaryExpression)
@@ -1542,16 +1542,16 @@ public class Generator
{ {
case NubPrimitiveType { Kind: PrimitiveTypeKind.I64 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.I64 }:
_builder.AppendLine($" {outputName} =l neg {operand}"); _builder.AppendLine($" {outputName} =l neg {operand}");
return $"{outputName}"; return outputName;
case NubPrimitiveType { Kind: PrimitiveTypeKind.I32 or PrimitiveTypeKind.I16 or PrimitiveTypeKind.I8 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.I32 or PrimitiveTypeKind.I16 or PrimitiveTypeKind.I8 }:
_builder.AppendLine($" {outputName} =w neg {operand}"); _builder.AppendLine($" {outputName} =w neg {operand}");
return $"{outputName}"; return outputName;
case NubPrimitiveType { Kind: PrimitiveTypeKind.F64 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.F64 }:
_builder.AppendLine($" {outputName} =d neg {operand}"); _builder.AppendLine($" {outputName} =d neg {operand}");
return $"{outputName}"; return outputName;
case NubPrimitiveType { Kind: PrimitiveTypeKind.F32 }: case NubPrimitiveType { Kind: PrimitiveTypeKind.F32 }:
_builder.AppendLine($" {outputName} =s neg {operand}"); _builder.AppendLine($" {outputName} =s neg {operand}");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -1562,7 +1562,7 @@ public class Generator
{ {
case NubPrimitiveType { Kind: PrimitiveTypeKind.Bool }: case NubPrimitiveType { Kind: PrimitiveTypeKind.Bool }:
_builder.AppendLine($" {outputName} =w xor {operand}, 1"); _builder.AppendLine($" {outputName} =w xor {operand}, 1");
return $"{outputName}"; return outputName;
} }
break; break;
@@ -1588,7 +1588,7 @@ public class Generator
{ {
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} =l loadl {item}"); _builder.AppendLine($" {outputName} =l loadl {item}");
return $"{outputName}"; return outputName;
} }
throw new ArgumentOutOfRangeException(nameof(memberAccess.Member)); throw new ArgumentOutOfRangeException(nameof(memberAccess.Member));
@@ -1603,14 +1603,14 @@ public class Generator
if (IsLargeType(memberAccess.Type)) if (IsLargeType(memberAccess.Type))
{ {
return $"{offsetName}"; return offsetName;
} }
else else
{ {
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} {QBEAssign(memberAccess.Type)} {QBELoad(memberAccess.Type)} {offsetName}"); _builder.AppendLine($" {outputName} {QBEAssign(memberAccess.Type)} {QBELoad(memberAccess.Type)} {offsetName}");
return $"{outputName}"; return outputName;
} }
} }
default: default:
@@ -1650,7 +1650,7 @@ public class Generator
{ {
var outputName = GenVarName(); var outputName = GenVarName();
_builder.AppendLine($" {outputName} {QBEAssign(funcCall.Type)} call {funcName}({string.Join(", ", parameterStrings)})"); _builder.AppendLine($" {outputName} {QBEAssign(funcCall.Type)} call {funcName}({string.Join(", ", parameterStrings)})");
return $"{outputName}"; return outputName;
} }
else else
{ {