From aa012410688a1bc6eabf3d1312fdf4aa7c4cfdc2 Mon Sep 17 00:00:00 2001 From: Daniel Chao Date: Fri, 5 Jun 2026 11:24:00 -0700 Subject: [PATCH] Fix eager typecheck of `Map` (#1654) Closes #1653 --- pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java | 2 +- .../src/test/files/LanguageSnippetTests/input/basic/is2.pkl | 5 +++++ .../src/test/files/LanguageSnippetTests/output/basic/is2.pcf | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java b/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java index 6c90ce814..aefa1dc6b 100644 --- a/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java +++ b/pkl-core/src/main/java/org/pkl/core/ast/type/TypeNode.java @@ -1543,7 +1543,7 @@ public abstract class TypeNode extends PklNode { if (skipEntryTypeChecks) return value; for (var entry : value) { keyTypeNode.executeEagerly(frame, VmUtils.getKey(entry)); - valueTypeNode.executeLazily(frame, VmUtils.getValue(entry)); + valueTypeNode.executeEagerly(frame, VmUtils.getValue(entry)); } LoopNode.reportLoopCount(this, value.getLength()); diff --git a/pkl-core/src/test/files/LanguageSnippetTests/input/basic/is2.pkl b/pkl-core/src/test/files/LanguageSnippetTests/input/basic/is2.pkl index a70859460..6c1b11348 100644 --- a/pkl-core/src/test/files/LanguageSnippetTests/input/basic/is2.pkl +++ b/pkl-core/src/test/files/LanguageSnippetTests/input/basic/is2.pkl @@ -1,5 +1,9 @@ amends "../snippetTest.pkl" +local class Animal + +local class Person + facts { ["List"] { List(1, 2, 3) is List @@ -16,6 +20,7 @@ facts { ["Map"] { Map("Pigeon", 42, "Barn Owl", 21) is Map !(Map("Pigeon", 42, "Barn Owl", 21) is Map) + !(Map("bob", new Listing { new Animal {} }) is Map>) } ["Listing"] { diff --git a/pkl-core/src/test/files/LanguageSnippetTests/output/basic/is2.pcf b/pkl-core/src/test/files/LanguageSnippetTests/output/basic/is2.pcf index 07334c613..6bb2d9628 100644 --- a/pkl-core/src/test/files/LanguageSnippetTests/output/basic/is2.pcf +++ b/pkl-core/src/test/files/LanguageSnippetTests/output/basic/is2.pcf @@ -12,6 +12,7 @@ facts { ["Map"] { true true + true } ["Listing"] { true