-
Notifications
You must be signed in to change notification settings - Fork 327
Open
Labels
bugSomething isn't workingSomething isn't workinggood first issueGood for newcomersGood for newcomers
Description
The behavior as-is is very surprising! Check this out:
import "pkl:json"
hidden jsonString = """
{
"hello": "world",
"default": "greeting"
}
"""
asDynamic = new json.Parser {}.parse(jsonString)
asMapping = new json.Parser { useMapping = true }.parse(jsonString)
Result:
asDynamic {
hello = "world"
}
asMapping {
["hello"] = "world"
["default"] = "greeting"
}
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:///.../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)
This similarly affects yaml.Parser.parse()
and Map.toDynamic()
.
holzensp
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workinggood first issueGood for newcomersGood for newcomers