Fix VmDynamicCursor (#1948)
This fixes an issue where it fails to iterate over this entry:
`new Dynamic { [-1] = 2 }`
This commit is contained in:
1 parent
b1b36b09ac
commit
5cb5d41a44
3 files changed
+17
-6
No files matched your search
@@ -102,7 +102,7 @@ final class VmDynamicCursors {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean shouldVisit(Object key) {
|
protected boolean shouldVisit(Object key) {
|
||||||
return key instanceof Long l && l < iteratee.getLength();
|
return key instanceof Long l && l >= 0 && l < iteratee.getLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -121,7 +121,7 @@ final class VmDynamicCursors {
|
|||||||
if (member.isProp()) {
|
if (member.isProp()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !(key() instanceof Long l) || l >= iteratee.getLength();
|
return !(key() instanceof Long l) || l < 0 || l >= iteratee.getLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -140,7 +140,7 @@ final class VmDynamicCursors {
|
|||||||
if (member.isProp()) {
|
if (member.isProp()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return !(key() instanceof Long l) || l >= iteratee.getLength();
|
return !(key() instanceof Long l) || l < 0 || l >= iteratee.getLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -157,7 +157,7 @@ final class VmDynamicCursors {
|
|||||||
@Override
|
@Override
|
||||||
protected boolean shouldVisit(Object key) {
|
protected boolean shouldVisit(Object key) {
|
||||||
if (key instanceof Identifier) return false;
|
if (key instanceof Identifier) return false;
|
||||||
if (key instanceof Long l) return l >= iteratee.getLength();
|
if (key instanceof Long l) return l < 0 || l >= iteratee.getLength();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,7 +184,7 @@ final class VmDynamicCursors {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isElement() {
|
public boolean isElement() {
|
||||||
return key() instanceof Long l && l < iteratee.getLength();
|
return key() instanceof Long l && l >= 0 && l < iteratee.getLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -210,7 +210,7 @@ final class VmDynamicCursors {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isElement() {
|
public boolean isElement() {
|
||||||
return key() instanceof Long l && l < iteratee.getLength();
|
return key() instanceof Long l && l >= 0 && l < iteratee.getLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -115,6 +115,12 @@ examples {
|
|||||||
map1.toDynamic()
|
map1.toDynamic()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
["toDynamic() round-trip"] {
|
||||||
|
Map(-1, 2).toDynamic().toMap()
|
||||||
|
Map(0, 2).toDynamic().toMap()
|
||||||
|
Map(1, 2).toDynamic().toMap()
|
||||||
|
}
|
||||||
|
|
||||||
["toMapping()"] {
|
["toMapping()"] {
|
||||||
Map().toMapping()
|
Map().toMapping()
|
||||||
map1.toMapping()
|
map1.toMapping()
|
||||||
|
|||||||
@@ -96,6 +96,11 @@ examples {
|
|||||||
three = 3
|
three = 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
["toDynamic() round-trip"] {
|
||||||
|
Map(-1, 2)
|
||||||
|
Map(0, 2)
|
||||||
|
Map(1, 2)
|
||||||
|
}
|
||||||
["toMapping()"] {
|
["toMapping()"] {
|
||||||
new {}
|
new {}
|
||||||
new {
|
new {
|
||||||
|
|||||||
Reference in new issue
Block a user