Skip to content

Commit 5856260

Browse files
committed
replace reliance on PString->String type system cast in time module
1 parent b2d07c6 commit 5856260

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,12 @@
4444
import java.util.TimeZone;
4545

4646
import com.oracle.graal.python.PythonLanguage;
47+
import com.oracle.graal.python.annotations.ArgumentClinic;
4748
import com.oracle.graal.python.builtins.Builtin;
4849
import com.oracle.graal.python.builtins.CoreFunctions;
4950
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
5051
import com.oracle.graal.python.builtins.PythonBuiltins;
52+
import com.oracle.graal.python.builtins.modules.TimeModuleBuiltinsClinicProviders.StrfTimeNodeClinicProviderGen;
5153
import com.oracle.graal.python.builtins.objects.PNone;
5254
import com.oracle.graal.python.builtins.objects.common.SequenceNodes.GetObjectArrayNode;
5355
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
@@ -62,7 +64,9 @@
6264
import com.oracle.graal.python.nodes.PRaiseNode;
6365
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
6466
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
67+
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryClinicBuiltinNode;
6568
import com.oracle.graal.python.nodes.function.builtins.PythonUnaryBuiltinNode;
69+
import com.oracle.graal.python.nodes.function.builtins.clinic.ArgumentClinicProvider;
6670
import com.oracle.graal.python.nodes.truffle.PythonArithmeticTypes;
6771
import com.oracle.graal.python.nodes.util.CastToJavaIntExactNode;
6872
import com.oracle.graal.python.runtime.PythonCore;
@@ -73,7 +77,6 @@
7377
import com.oracle.truffle.api.TruffleOptions;
7478
import com.oracle.truffle.api.dsl.Cached;
7579
import com.oracle.truffle.api.dsl.Cached.Shared;
76-
import com.oracle.truffle.api.dsl.Fallback;
7780
import com.oracle.truffle.api.dsl.GenerateNodeFactory;
7881
import com.oracle.truffle.api.dsl.NodeFactory;
7982
import com.oracle.truffle.api.dsl.Specialization;
@@ -483,10 +486,14 @@ private static void doSleep(double seconds, double deadline) {
483486
}
484487

485488
// time.strftime(format[, t])
486-
@Builtin(name = "strftime", minNumOfPositionalArgs = 1, maxNumOfPositionalArgs = 2)
489+
@Builtin(name = "strftime", minNumOfPositionalArgs = 1, parameterNames = {"format", "time"})
490+
@ArgumentClinic(name = "format", conversion = ArgumentClinic.ClinicConversion.String)
487491
@GenerateNodeFactory
488-
@TypeSystemReference(PythonArithmeticTypes.class)
489-
public abstract static class StrfTimeNode extends PythonBuiltinNode {
492+
public abstract static class StrfTimeNode extends PythonBinaryClinicBuiltinNode {
493+
@Override
494+
protected ArgumentClinicProvider getArgumentClinic() {
495+
return StrfTimeNodeClinicProviderGen.INSTANCE;
496+
}
490497

491498
private static Object castToPInt(Object obj, PythonObjectLibrary asPIntLib, PRaiseNode raise) {
492499
if (asPIntLib.canBePInt(obj)) {
@@ -827,11 +834,6 @@ public String formatTime(String format, PTuple time,
827834
public String formatTime(@SuppressWarnings("unused") String format, @SuppressWarnings("unused") Object time) {
828835
throw raise(PythonBuiltinClassType.TypeError, ErrorMessages.TUPLE_OR_STRUCT_TIME_ARG_REQUIRED);
829836
}
830-
831-
@Fallback
832-
public String formatTime(Object format, @SuppressWarnings("unused") Object time) {
833-
throw raise(PythonBuiltinClassType.TypeError, ErrorMessages.ARG_D_MUST_BE_S_NOT_P, "strftime()", 1, "str", format);
834-
}
835837
}
836838

837839
@Builtin(name = "mktime", minNumOfPositionalArgs = 1, doc = "mktime(tuple) -> floating point number\n\n" +

0 commit comments

Comments
 (0)