I think throwing an error (or at least some kind of warning) here instead of returning unexpected results is desirable. Something like "encountered object key default when parsing JSON, resulting Dynamic will be incomplete or invalid" might make sense.
N.B.: Attempting to access the default yields further surprises:
asDynamicDefault = asDynamic.default
Result:
❯ pkl eval test.pkl
–– Pkl Error ––
Expected value of type `Function1`, but got type `String`.
Value: "greeting"
1741 | hidden default: (unknown) -> Any = (_) -> new Dynamic {}
^^^^^^^^^^^^^^^^
at pkl.base#Dynamic.default (https://github.com/apple/pkl/blob/0.26.0/stdlib/base.pkl#L1741)
1 |
^
at generated (source:unavailable)
11 | asDynamicDefault = asDynamic.default
^^^^^^^^^^^^^^^^^
at test#asDynamicDefault (file:///Users/jbasch/src/tsukemono/test.pkl, line 11)
106 | text = renderer.renderDocument(value)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
at pkl.base#Module.output.text (https://github.com/apple/pkl/blob/0.26.0/stdlib/base.pkl#L106)
The behavior as-is is very surprising! Check this out:
Result:
I think throwing an error (or at least some kind of warning) here instead of returning unexpected results is desirable. Something like "encountered object key
default
when parsing JSON, resultingDynamic
will be incomplete or invalid" might make sense.N.B.: Attempting to access the default yields further surprises:
Result: