From 496e7f4addb7866fb1e419a98c52a870393296f4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 2 Dec 2023 20:42:12 +0000 Subject: Extract defineParams() --- .../compiler/patio/PatioCodeGenClosures.java | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenClosures.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenClosures.java index 9e5b2b1d..36f83cb2 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenClosures.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenClosures.java @@ -89,12 +89,7 @@ class PatioCodeGenClosures { var closurePointer = closurePointerResult.value(); bodyContext = closurePointerResult.context(); - var orderedNamedParams = sortedBy(namedParams, param -> param.name()); - var shidParams = Stream.concat(positionalParams.stream(), orderedNamedParams.stream()).toList(); - - for (var shidParam : shidParams) { - bodyContext = bodyContext.defineShidParam(shidParam.name()); - } + bodyContext = defineParams(positionalParams, namedParams, bodyContext); bodyContext = loadFreeVariables( freeVariables, @@ -145,6 +140,21 @@ class PatioCodeGenClosures { return context; } + private static PatioCodeGenContext defineParams( + List positionalParams, + List namedParams, + PatioCodeGenContext bodyContext + ) { + var orderedNamedParams = sortedBy(namedParams, param -> param.name()); + var shidParams = Stream.concat(positionalParams.stream(), orderedNamedParams.stream()).toList(); + + for (var shidParam : shidParams) { + bodyContext = bodyContext.defineShidParam(shidParam.name()); + } + + return bodyContext; + } + private static PatioCodeGenContext storeFreeVariables( FreeVariables freeVariables, PatioLocalRef closurePointer, -- cgit v1.2.3