diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-12-02 20:42:12 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-12-02 20:42:12 +0000 |
| commit | 496e7f4addb7866fb1e419a98c52a870393296f4 (patch) | |
| tree | 6d2f249a2532099db4791c5d0343f23b321b24cd /src/main/java | |
| parent | 4201eba418a2a02fa1cb8190dd897cc246c3a45e (diff) | |
Extract defineParams()
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/patio/PatioCodeGenClosures.java | 22 |
1 files changed, 16 insertions, 6 deletions
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<ShidDefineFunction.Param> positionalParams, + List<ShidDefineFunction.Param> 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, |
