Original PR: https://github.com/apple/pkl/pull/922 Author: @bioball Created: 1/31/2025 Status: ❌ Closed
Base: main ← Head: constraint-details
main
constraint-details
8d79f25
860154e
703fa70
79 files changed (+948 additions, -538 deletions)
📝 pkl-cli/src/test/kotlin/org/pkl/cli/CliMainTest.kt (+5 -2) 📝 pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java (+1 -1) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/binary/ComparatorNode.java (+3 -2) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/binary/LetExprNode.java (+1 -1) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/binary/PipeNode.java (+4 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/binary/SubscriptNode.java (+20 -9) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPredicateMemberNode.java (+1 -1) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/literal/AmendFunctionNode.java (+4 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/InferParentWithinPropertyNode.java (+6 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodDirectNode.java (+6 -4) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodLexicalNode.java (+5 -4) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodVirtualNode.java (+21 -16) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeSuperMethodNode.java (+5 -4) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadLocalPropertyNode.java (+2 -2) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadPropertyNode.java (+11 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperEntryNode.java (+10 -5) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperPropertyNode.java (+3 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/member/ResolveMethodNode.java (+5 -3) 📝 pkl-core/src/main/java/org/pkl/core/ast/expression/primary/ResolveVariableNode.java (+2 -1) 📝 pkl-core/src/main/java/org/pkl/core/ast/lambda/ApplyVmFunction0Node.java (+9 -4)
pkl-cli/src/test/kotlin/org/pkl/cli/CliMainTest.kt
pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/ComparatorNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/LetExprNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/PipeNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/SubscriptNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPredicateMemberNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/literal/AmendFunctionNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InferParentWithinPropertyNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodDirectNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodLexicalNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodVirtualNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeSuperMethodNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadLocalPropertyNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadPropertyNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperEntryNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperPropertyNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ResolveMethodNode.java
pkl-core/src/main/java/org/pkl/core/ast/expression/primary/ResolveVariableNode.java
pkl-core/src/main/java/org/pkl/core/ast/lambda/ApplyVmFunction0Node.java
...and 59 more files
Fixes https://github.com/apple/pkl/issues/918
This causes Pkl to eagerly check type nodes that are executed through a constraint.
In the following snippet, the lambda parameter type (Listing<Person>) because an eager typecheck.
Listing<Person>
foo: Listing(firstOneIsSandy) local firstOneIsSandy = (it: Listing<Person>) -> it[0].name == "Sandy"
This adds a new implicit frame argument to every frame: the 0th frame argument is now EnumSet<FrameMarkers>.
EnumSet<FrameMarkers>
A frame's argument layout changes to>
Frame markers get propagated through child call nodes.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.
No dependencies set.
The note is not visible to the blocked user.
📋 Pull Request Information
Original PR: https://github.com/apple/pkl/pull/922
Author: @bioball
Created: 1/31/2025
Status: ❌ Closed
Base:
main← Head:constraint-details📝 Commits (3)
8d79f25WIP: constraint details860154eUse frame arguments to control eager/lazy typechecks703fa70Polish📊 Changes
79 files changed (+948 additions, -538 deletions)
View changed files
📝
pkl-cli/src/test/kotlin/org/pkl/cli/CliMainTest.kt(+5 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/builder/SymbolTable.java(+1 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/ComparatorNode.java(+3 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/LetExprNode.java(+1 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/PipeNode.java(+4 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/binary/SubscriptNode.java(+20 -9)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/generator/GeneratorPredicateMemberNode.java(+1 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/literal/AmendFunctionNode.java(+4 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InferParentWithinPropertyNode.java(+6 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodDirectNode.java(+6 -4)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodLexicalNode.java(+5 -4)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeMethodVirtualNode.java(+21 -16)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/InvokeSuperMethodNode.java(+5 -4)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadLocalPropertyNode.java(+2 -2)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadPropertyNode.java(+11 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperEntryNode.java(+10 -5)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ReadSuperPropertyNode.java(+3 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/member/ResolveMethodNode.java(+5 -3)📝
pkl-core/src/main/java/org/pkl/core/ast/expression/primary/ResolveVariableNode.java(+2 -1)📝
pkl-core/src/main/java/org/pkl/core/ast/lambda/ApplyVmFunction0Node.java(+9 -4)...and 59 more files
📄 Description
Fixes https://github.com/apple/pkl/issues/918
This causes Pkl to eagerly check type nodes that are executed through a constraint.
In the following snippet, the lambda parameter type (
Listing<Person>) because an eager typecheck.This adds a new implicit frame argument to every frame: the 0th frame argument is now
EnumSet<FrameMarkers>.A frame's argument layout changes to>
Frame markers get propagated through child call nodes.
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.