NullPointerException on circular import #340

Open
opened 2025-12-30 01:23:41 +01:00 by adam · 2 comments
Owner

Originally created by @bioball on GitHub (Aug 21, 2025).

The following code produces a NullPointerException:

// child/foo.pkl
amends "..."
// child/Qux.pkl
import "foo.pkl"

res: foo.Bar
// Biz.pkl
import "child/Qux.pkl"

qux: Qux = new {
  res = "bar"
}
// foo.pkl
import "Biz.pkl"

prop: Biz

typealias Bar = "bar"

Then run pkl eval child/foo.pkl

See attached zip file for a reproducer.

cycle.zip

Throws:

–– Pkl Error ––
None (cause has no message)

1 | import "foo.pkl"
    ^^^^^^^^^^^^^^^^
at Qux (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/child/Qux.pkl:1)

3 | qux: Qux = new {
         ^^^
at Biz (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/Biz.pkl:3)

3 | prop: Biz
          ^^^
at foo (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/foo.pkl:3)

Pkl 0.29.0 (macOS 14.3.1, native)

java.lang.NullPointerException
        at org.pkl.core.ast.type.ResolveQualifiedDeclaredTypeNode.executeGeneric(ResolveQualifiedDeclaredTypeNode.java:62)
        at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139)
        at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35)
        at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502)
        at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112)
        at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178)
        at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157)
        at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81)
        at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57)
        at org.pkl.core.ast.member.UntypedObjectMemberNode.executeImpl(UntypedObjectMemberNode.java:36)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedIndirectCallNode.call(OptimizedIndirectCallNode.java:68)
        at org.pkl.core.ast.type.ResolveDeclaredTypeNode.getType(ResolveDeclaredTypeNode.java:96)
        at org.pkl.core.ast.type.ResolveSimpleDeclaredTypeNode.executeGeneric(ResolveSimpleDeclaredTypeNode.java:43)
        at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139)
        at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35)
        at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502)
        at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112)
        at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178)
        at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157)
        at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81)
        at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57)
        at org.pkl.core.ast.member.UntypedObjectMemberNode.executeImpl(UntypedObjectMemberNode.java:36)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedIndirectCallNode.call(OptimizedIndirectCallNode.java:68)
        at org.pkl.core.ast.type.ResolveDeclaredTypeNode.getType(ResolveDeclaredTypeNode.java:96)
        at org.pkl.core.ast.type.ResolveSimpleDeclaredTypeNode.executeGeneric(ResolveSimpleDeclaredTypeNode.java:43)
        at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139)
        at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150)
        at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35)
        at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502)
        at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112)
        at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178)
        at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157)
        at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81)
        at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57)
        at org.pkl.core.ast.expression.literal.AmendModuleNodeGen.executeGeneric(AmendModuleNodeGen.java:62)
        at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56)
        at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232)
        at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556)
        at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502)
        at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112)
        at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178)
        at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157)
        at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:67)
        at org.pkl.core.EvaluatorImpl.lambda$doEvaluate$15(EvaluatorImpl.java:367)
        at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:316)
        at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:364)
        at org.pkl.core.EvaluatorImpl.evaluateOutputBytes(EvaluatorImpl.java:148)
        at org.pkl.cli.CliEvaluator.writeOutput(CliEvaluator.kt:217)
        at org.pkl.cli.CliEvaluator.doRun(CliEvaluator.kt:105)
        at org.pkl.commons.cli.CliCommand.run(CliCommand.kt:46)
        at org.pkl.cli.commands.EvalCommand.run(EvalCommand.kt:84)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:107)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
        at org.pkl.cli.Main.main$lambda$0(Main.kt:26)
        at org.pkl.commons.cli.CliMainKt.cliMain(CliMain.kt:33)
        at org.pkl.cli.Main.main(Main.kt:26)
Originally created by @bioball on GitHub (Aug 21, 2025). The following code produces a `NullPointerException`: ```pkl // child/foo.pkl amends "..." ``` ```pkl // child/Qux.pkl import "foo.pkl" res: foo.Bar ``` ```pkl // Biz.pkl import "child/Qux.pkl" qux: Qux = new { res = "bar" } ``` ```pkl // foo.pkl import "Biz.pkl" prop: Biz typealias Bar = "bar" ``` Then run `pkl eval child/foo.pkl` See attached zip file for a reproducer. [cycle.zip](https://github.com/user-attachments/files/21925386/cycle.zip) Throws: ``` –– Pkl Error –– None (cause has no message) 1 | import "foo.pkl" ^^^^^^^^^^^^^^^^ at Qux (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/child/Qux.pkl:1) 3 | qux: Qux = new { ^^^ at Biz (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/Biz.pkl:3) 3 | prop: Biz ^^^ at foo (/Users/danielchao/code/apple/pkl/.dan-scripts/cycle/foo.pkl:3) Pkl 0.29.0 (macOS 14.3.1, native) java.lang.NullPointerException at org.pkl.core.ast.type.ResolveQualifiedDeclaredTypeNode.executeGeneric(ResolveQualifiedDeclaredTypeNode.java:62) at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139) at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35) at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502) at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112) at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178) at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157) at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81) at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57) at org.pkl.core.ast.member.UntypedObjectMemberNode.executeImpl(UntypedObjectMemberNode.java:36) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedIndirectCallNode.call(OptimizedIndirectCallNode.java:68) at org.pkl.core.ast.type.ResolveDeclaredTypeNode.getType(ResolveDeclaredTypeNode.java:96) at org.pkl.core.ast.type.ResolveSimpleDeclaredTypeNode.executeGeneric(ResolveSimpleDeclaredTypeNode.java:43) at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139) at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35) at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502) at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112) at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178) at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157) at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81) at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57) at org.pkl.core.ast.member.UntypedObjectMemberNode.executeImpl(UntypedObjectMemberNode.java:36) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedIndirectCallNode.call(OptimizedIndirectCallNode.java:68) at org.pkl.core.ast.type.ResolveDeclaredTypeNode.getType(ResolveDeclaredTypeNode.java:96) at org.pkl.core.ast.type.ResolveSimpleDeclaredTypeNode.executeGeneric(ResolveSimpleDeclaredTypeNode.java:43) at org.pkl.core.ast.type.UnresolvedTypeNode$Declared.execute(UnresolvedTypeNode.java:139) at org.pkl.core.ast.member.UnresolvedPropertyNode.execute(UnresolvedPropertyNode.java:167) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:150) at org.pkl.core.ast.member.ClassNode.executeGeneric(ClassNode.java:35) at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502) at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112) at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178) at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157) at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:81) at org.pkl.core.ast.expression.unary.ImportNode.executeGeneric(ImportNode.java:57) at org.pkl.core.ast.expression.literal.AmendModuleNodeGen.executeGeneric(AmendModuleNodeGen.java:62) at org.pkl.core.ast.member.ModuleNode.executeImpl(ModuleNode.java:56) at org.pkl.core.ast.PklRootNode.execute(PklRootNode.java:46) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.executeRootNode(OptimizedCallTarget.java:776) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.profiledPERoot(OptimizedCallTarget.java:700) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:624) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.invokeCallBoundary(SubstrateOptimizedCallTarget.java:124) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTargetInstalledCode.doInvoke(SubstrateOptimizedCallTargetInstalledCode.java:232) at org.graalvm.truffle.runtime.svm/com.oracle.svm.truffle.api.SubstrateOptimizedCallTarget.doInvoke(SubstrateOptimizedCallTarget.java:106) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:556) at org.graalvm.truffle.runtime/com.oracle.truffle.runtime.OptimizedCallTarget.call(OptimizedCallTarget.java:502) at org.pkl.core.runtime.VmLanguage.initializeModule(VmLanguage.java:112) at org.pkl.core.runtime.ModuleCache.doLoad(ModuleCache.java:178) at org.pkl.core.runtime.ModuleCache.getOrLoad(ModuleCache.java:157) at org.pkl.core.runtime.VmLanguage.loadModule(VmLanguage.java:67) at org.pkl.core.EvaluatorImpl.lambda$doEvaluate$15(EvaluatorImpl.java:367) at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:316) at org.pkl.core.EvaluatorImpl.doEvaluate(EvaluatorImpl.java:364) at org.pkl.core.EvaluatorImpl.evaluateOutputBytes(EvaluatorImpl.java:148) at org.pkl.cli.CliEvaluator.writeOutput(CliEvaluator.kt:217) at org.pkl.cli.CliEvaluator.doRun(CliEvaluator.kt:105) at org.pkl.commons.cli.CliCommand.run(CliCommand.kt:46) at org.pkl.cli.commands.EvalCommand.run(EvalCommand.kt:84) at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:107) at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78) at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90) at org.pkl.cli.Main.main$lambda$0(Main.kt:26) at org.pkl.commons.cli.CliMainKt.cliMain(CliMain.kt:33) at org.pkl.cli.Main.main(Main.kt:26) ```
Author
Owner

@bioball commented on GitHub (Aug 22, 2025):

Here's a more simplified version:

// Foo.pkl
import "Qux.pkl"

prop: Qux?

typealias Bar = "bar"
// amendsFoo.pkl
amends "Foo.pkl"
// Qux.pkl
import "amendsFoo.pkl"

res: amendsFoo.Bar
@bioball commented on GitHub (Aug 22, 2025): Here's a more simplified version: ```pkl // Foo.pkl import "Qux.pkl" prop: Qux? typealias Bar = "bar" ``` ```pkl // amendsFoo.pkl amends "Foo.pkl" ``` ```pkl // Qux.pkl import "amendsFoo.pkl" res: amendsFoo.Bar ```
Author
Owner

@bioball commented on GitHub (Aug 22, 2025):

Aaah here's an even more simplified example:

// Foo.pkl
import "amendsFoo.pkl"

prop: amendsFoo.Bar?

typealias Bar = "bar"
// amendsFoo.pkl
amends "Foo.pkl"
@bioball commented on GitHub (Aug 22, 2025): Aaah here's an even more simplified example: ```pkl // Foo.pkl import "amendsFoo.pkl" prop: amendsFoo.Bar? typealias Bar = "bar" ``` ```pkl // amendsFoo.pkl amends "Foo.pkl" ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/pkl#340