diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-08 19:05:56 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-08 19:07:06 +0100 |
| commit | 4c67c6f5bf3df6ffe54d4cd148db8ffab60c4ea6 (patch) | |
| tree | 47e5028ee8635719713a3361cc9b734cd387d5c5 | |
| parent | 879826dd5cbbd50314bd89caded240c2b12c156c (diff) | |
Return result from patioReturnOperandsToLlvmOperand
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/codegen/PatioToLlvm.java | 19 |
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() + ) ); } } |
