summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoichi Sasada <ko1@atdot.net>2021-11-13 07:44:46 +0900
committerKoichi Sasada <ko1@atdot.net>2021-11-15 15:58:56 +0900
commit2a3d5d661ce2cadad50aa5d72b54e134da54f5f3 (patch)
tree2b20bf1f12d64ec7076106fa5039bdd4d6aef96d
parentdde010c97432de8ac2336eeeb4f6b99daf832b61 (diff)
downloadruby-2a3d5d661ce2cadad50aa5d72b54e134da54f5f3.tar.gz
Use `Primitive.mandatory_only?` for `Time.at`
-rw-r--r--time.c6
-rw-r--r--timev.rb6
2 files changed, 11 insertions, 1 deletions
diff --git a/time.c b/time.c
index 44864ff748..9c23089cfd 100644
--- a/time.c
+++ b/time.c
@@ -2708,6 +2708,12 @@ time_s_at(rb_execution_context_t *ec, VALUE klass, VALUE time, VALUE subsec, VAL
return t;
}
+static VALUE
+time_s_at1(rb_execution_context_t *ec, VALUE klass, VALUE time)
+{
+ return time_s_at(ec, klass, time, Qfalse, ID2SYM(id_microsecond), Qnil);
+}
+
static const char months[][4] = {
"jan", "feb", "mar", "apr", "may", "jun",
"jul", "aug", "sep", "oct", "nov", "dec",
diff --git a/timev.rb b/timev.rb
index a475fc482d..675b54faf6 100644
--- a/timev.rb
+++ b/timev.rb
@@ -268,7 +268,11 @@ class Time
# :include: doc/time/in.rdoc
#
def self.at(time, subsec = false, unit = :microsecond, in: nil)
- Primitive.time_s_at(time, subsec, unit, Primitive.arg!(:in))
+ if Primitive.mandatory_only?
+ Primitive.time_s_at1(time)
+ else
+ Primitive.time_s_at(time, subsec, unit, Primitive.arg!(:in))
+ end
end
# Returns a new \Time object based the on given arguments.