Skip to content

Commit a222d90

Browse files
committed
Fix interop behavior: object with 'KEYS' is not a mapping.
1 parent 759172f commit a222d90

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/foreign/TruffleObjectBuiltins.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,13 @@ protected boolean isForeignArray(TruffleObject receiver) {
504504

505505
protected boolean isForeignMapping(TruffleObject receiver) {
506506
if (PGuards.isForeignObject(receiver)) {
507+
if (hasSizeNode == null) {
508+
CompilerDirectives.transferToInterpreterAndInvalidate();
509+
hasSizeNode = insert(Message.HAS_SIZE.createNode());
510+
}
511+
if (!ForeignAccess.sendHasSize(hasSizeNode, receiver)) {
512+
return false;
513+
}
507514
if (hasKeysNode == null) {
508515
CompilerDirectives.transferToInterpreterAndInvalidate();
509516
hasKeysNode = insert(Message.HAS_KEYS.createNode());

graalpython/lib-graalpython/_sre.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ def __group__(self, idx):
108108

109109
def groupdict(self, default=None):
110110
d = {}
111-
for k in self.compiled_regex.groups:
111+
assert _interop.__has_keys__(self.compiled_regex.groups)
112+
for k in _interop.__keys__(self.compiled_regex.groups):
112113
idx = self.compiled_regex.groups[k]
113114
d[k] = self.__group__(idx)
114115
return d

0 commit comments

Comments
 (0)