aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-08 19:05:56 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-08 19:07:06 +0100
commit4c67c6f5bf3df6ffe54d4cd148db8ffab60c4ea6 (patch)
tree47e5028ee8635719713a3361cc9b734cd387d5c5
parent879826dd5cbbd50314bd89caded240c2b12c156c (diff)
Return result from patioReturnOperandsToLlvmOperand
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
index 9908c1e8..428190aa 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java
@@ -589,7 +589,10 @@ public class PatioToLlvm {
if (llvmReturnType == LlvmTypes.VOID) {
yield context.addTerminatorInstruction(new LlvmReturnVoid());
} else {
- var llvmReturnOperand = patioReturnOperandsToLlvmOperand(patioReturn.values(), context);
+ var llvmReturnOperandResult = patioReturnOperandsToLlvmOperand(patioReturn.values(), context);
+ var llvmReturnOperand = llvmReturnOperandResult.value();
+ context = llvmReturnOperandResult.context();
+
yield context.addTerminatorInstruction(new LlvmReturn(
llvmReturnType,
llvmReturnOperand
@@ -1122,17 +1125,19 @@ public class PatioToLlvm {
};
}
- private static LlvmOperand patioReturnOperandsToLlvmOperand(
+ private static PatioToLlvmFunctionContext.Result<LlvmOperand> patioReturnOperandsToLlvmOperand(
List<PatioOperand> patioReturnOperands,
PatioToLlvmFunctionContext context
) {
if (patioReturnOperands.size() == 1) {
- return patioOperandToLlvmOperand(patioReturnOperands.get(0), context);
+ return context.toResult(patioOperandToLlvmOperand(patioReturnOperands.get(0), context));
} else {
- return new LlvmOperandStructure(
- patioReturnOperands.stream()
- .map(patioReturnOperand -> patioOperandToLlvmTypedOperand(patioReturnOperand, context))
- .toList()
+ return context.toResult(
+ new LlvmOperandStructure(
+ patioReturnOperands.stream()
+ .map(patioReturnOperand -> patioOperandToLlvmTypedOperand(patioReturnOperand, context))
+ .toList()
+ )
);
}
}