Skip to content

Commit dcf1b39

Browse files
cosminbascatomasstupka
authored andcommitted
dir builtin: sort returned list of keys
1 parent 25f6baa commit dcf1b39

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/BuiltinFunctions.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@
101101
import com.oracle.graal.python.builtins.objects.function.PArguments;
102102
import com.oracle.graal.python.builtins.objects.function.PKeyword;
103103
import com.oracle.graal.python.builtins.objects.ints.PInt;
104+
import com.oracle.graal.python.builtins.objects.list.ListBuiltins;
105+
import com.oracle.graal.python.builtins.objects.list.PList;
104106
import com.oracle.graal.python.builtins.objects.module.PythonModule;
105107
import com.oracle.graal.python.builtins.objects.object.PythonObject;
106108
import com.oracle.graal.python.builtins.objects.object.PythonObjectLibrary;
@@ -484,11 +486,14 @@ Object locals(VirtualFrame frame, @SuppressWarnings("unused") Object object,
484486
@Cached MaterializeFrameNode materializeNode,
485487
@Cached("createBinaryProfile()") ConditionProfile inGenerator,
486488
@Cached("create(KEYS)") LookupAndCallUnaryNode callKeysNode,
489+
@Cached ListBuiltins.ListSortNode sortNode,
487490
@Cached ListNodes.ConstructListNode constructListNode) {
488491

489492
Object localsDict = LocalsNode.getLocalsDict(frame, this, readLocalsNode, readCallerFrameNode, materializeNode, inGenerator);
490493
Object keysObj = callKeysNode.executeObject(frame, localsDict);
491-
return constructListNode.execute(keysObj);
494+
PList list = constructListNode.execute(keysObj);
495+
sortNode.sort(frame, list);
496+
return list;
492497
}
493498

494499
@Specialization(guards = "!isNoValue(object)")

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/list/ListBuiltins.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,12 @@ protected static boolean maySideEffect(PList list, PKeyword[] keywords) {
877877
return false;
878878
}
879879

880+
public final Object sort(VirtualFrame frame, PList list) {
881+
return this.execute(frame, list, PArguments.EMPTY_VARARGS, PKeyword.EMPTY_KEYWORDS);
882+
}
883+
884+
public abstract Object execute(VirtualFrame frame, PList list, Object[] arguments, PKeyword[] keywords);
885+
880886
@Specialization(guards = "!isSortable(list, lenNode)")
881887
@SuppressWarnings("unused")
882888
Object none(VirtualFrame frame, PList list, Object[] arguments, PKeyword[] keywords,
@@ -907,6 +913,10 @@ Object defaultSort(VirtualFrame frame, PList list, Object[] arguments, PKeyword[
907913
callSort.execute(sortMethod, arguments, keywords);
908914
return PNone.NONE;
909915
}
916+
917+
public static ListSortNode create() {
918+
return ListBuiltinsFactory.ListSortNodeFactory.create();
919+
}
910920
}
911921

912922
@Builtin(name = __LEN__, minNumOfPositionalArgs = 1)

0 commit comments

Comments
 (0)