mirror of
https://github.com/apple/pkl.git
synced 2026-04-10 18:57:00 +02:00
Fix the sequence length in the YAML parser
The initialSize in EconomicsMaps.create() is not the actual stored size, hence the accurate size is not determined until ObjectMembers are added after addMembers() called. Since the size set during the creation of VmListing cannot be changed afterwards, the size of node.getValue() is used instead of members' size.
This commit is contained in:
committed by
Philip K.F. Hölzenspies
parent
3c6df1fe34
commit
375b88f53e
@@ -345,14 +345,15 @@ public final class ParserNodes {
|
||||
@Override
|
||||
public VmListing construct(Node node) {
|
||||
var sequenceNode = (SequenceNode) node;
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(sequenceNode.getValue().size());
|
||||
var size = sequenceNode.getValue().size();
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(size);
|
||||
|
||||
var result =
|
||||
new VmListing(
|
||||
VmUtils.createEmptyMaterializedFrame(),
|
||||
BaseModule.getListingClass().getPrototype(),
|
||||
members,
|
||||
EconomicMaps.size(members));
|
||||
size);
|
||||
|
||||
if (!node.isRecursive()) {
|
||||
addMembers(sequenceNode, result);
|
||||
@@ -390,14 +391,15 @@ public final class ParserNodes {
|
||||
@Override
|
||||
public VmListing construct(Node node) {
|
||||
var mappingNode = (MappingNode) node;
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(mappingNode.getValue().size());
|
||||
var size = mappingNode.getValue().size();
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(size);
|
||||
|
||||
var result =
|
||||
new VmListing(
|
||||
VmUtils.createEmptyMaterializedFrame(),
|
||||
BaseModule.getListingClass().getPrototype(),
|
||||
members,
|
||||
EconomicMaps.size(members));
|
||||
size);
|
||||
|
||||
if (!node.isRecursive()) {
|
||||
addMembers(mappingNode, result);
|
||||
@@ -437,7 +439,8 @@ public final class ParserNodes {
|
||||
@Override
|
||||
public VmObject construct(Node node) {
|
||||
var mappingNode = (MappingNode) node;
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(mappingNode.getValue().size());
|
||||
var size = mappingNode.getValue().size();
|
||||
var members = EconomicMaps.<Object, ObjectMember>create(size);
|
||||
|
||||
VmObject result;
|
||||
if (useMapping) {
|
||||
|
||||
Reference in New Issue
Block a user