Skip to content

Commit 87da9d2

Browse files
committed
Fix error rendering @ConvertProperty annotations during error reporting
1 parent 8b6b90d commit 87da9d2

4 files changed

Lines changed: 38 additions & 2 deletions

File tree

pkl-core/src/main/java/org/pkl/core/runtime/VmUndefinedValueException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ public VmUndefinedValueException fillInHint(Deque<Object> path, Object topLevelV
7474
if (topLevelValue instanceof VmTyped typed && typed.isModuleObject()) {
7575
builder
7676
.append(" of module `")
77-
.append(typed.getModuleInfo().getModuleSchema(typed).getModuleUri())
77+
.append(typed.getModuleInfo().getModuleKey().getUri())
7878
.append('`');
7979
}
8080
builder.append('.');
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class WrapTypeWithName extends ConvertProperty {
2+
// render: (Pair<String, Any>, BaseValueRenderer) -> Pair<String, Any>
3+
render = (p, _) ->
4+
Pair(p.key, new Mapping {
5+
[p.value.getClass().simpleName] = p.value
6+
})
7+
}
8+
9+
class Something {
10+
@WrapTypeWithName
11+
prop1: String
12+
prop2: Int
13+
}
14+
15+
a: Something = new Something {
16+
prop2 = 1
17+
}
18+
19+
// this should result in: Tried to read property `prop1` but its value is undefined.
20+
// any other error would result from an error in the reporting path
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
–– Pkl Error ––
2+
Tried to read property `prop1` but its value is undefined.
3+
4+
xx | prop1: String
5+
^^^^^
6+
at convertProperty1#Something.prop1 (file:///$snippetsDir/input/errors/convertProperty1.pkl)
7+
8+
The above error occurred when rendering path `a.prop1` of module `file:///$snippetsDir/input/errors/convertProperty1.pkl`.
9+
10+
xxx | renderer.renderDocument(value)
11+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
12+
at pkl.base#Module.output.text (pkl:base)
13+
14+
xxx | if (renderer is BytesRenderer) renderer.renderDocument(value) else text.encodeToBytes("UTF-8")
15+
^^^^
16+
at pkl.base#Module.output.bytes (pkl:base)

stdlib/base.pkl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ abstract class BaseValueRenderer {
414414
open class ConvertProperty extends Annotation {
415415
/// Function called by [BaseValueRenderer] types during rendering to transform property
416416
/// names and values.
417-
render: (Pair<String, Any>, BaseValueRenderer) -> Pair<String, Any>
417+
hidden render: (Pair<String, Any>, BaseValueRenderer) -> Pair<String, Any>
418418
}
419419

420420
/// Base class for rendering Pkl values in some textual output format.

0 commit comments

Comments
 (0)