diff --git a/graalpython/com.oracle.graal.python.test/src/tests/test_threading.py b/graalpython/com.oracle.graal.python.test/src/tests/test_threading.py index e3af32a7e8..0bf2a6ecfa 100644 --- a/graalpython/com.oracle.graal.python.test/src/tests/test_threading.py +++ b/graalpython/com.oracle.graal.python.test/src/tests/test_threading.py @@ -173,3 +173,10 @@ def test_blocking_os_read_thread_does_not_deadlock_import_re(): ) assert result.returncode == 0, result.stderr assert result.stdout.rstrip().endswith("ok"), result.stdout + + +def test_rlock_new_ignores_arguments(): + import _thread + + assert type(_thread.RLock(0)) is _thread.RLock + assert type(_thread.RLock(x=1)) is _thread.RLock diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread/RLockBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread/RLockBuiltins.java index 7e39fd9078..b0f93cb3ea 100644 --- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread/RLockBuiltins.java +++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/thread/RLockBuiltins.java @@ -52,6 +52,7 @@ import com.oracle.graal.python.builtins.PythonBuiltins; import com.oracle.graal.python.builtins.objects.PNone; import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes; +import com.oracle.graal.python.builtins.objects.function.PKeyword; import com.oracle.graal.python.builtins.objects.tuple.PTuple; import com.oracle.graal.python.builtins.objects.type.TpSlots; import com.oracle.graal.python.builtins.objects.type.TypeNodes; @@ -62,6 +63,7 @@ import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode; import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode; import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode; +import com.oracle.graal.python.nodes.function.builtins.PythonVarargsBuiltinNode; import com.oracle.graal.python.nodes.util.CastToJavaUnsignedLongNode; import com.oracle.graal.python.runtime.GilNode; import com.oracle.graal.python.runtime.exception.PythonErrorType; @@ -85,11 +87,12 @@ protected List> getNodeFa } @Slot(value = SlotKind.tp_new, isComplex = true) - @SlotSignature(name = "RLock", minNumOfPositionalArgs = 1) + @SlotSignature(name = "RLock", minNumOfPositionalArgs = 1, takesVarArgs = true, takesVarKeywordArgs = true) @GenerateNodeFactory - public abstract static class ConstructRLockNode extends PythonUnaryBuiltinNode { + public abstract static class ConstructRLockNode extends PythonVarargsBuiltinNode { + @SuppressWarnings("unused") @Specialization - PRLock construct(Object cls, + PRLock construct(Object cls, Object[] arguments, PKeyword[] keywords, @Cached TypeNodes.GetInstanceShape getInstanceShape) { return PFactory.createRLock(cls, getInstanceShape.execute(cls)); }