aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--test/ruby/test_time_tz.rb1
-rw-r--r--timev.rb16
2 files changed, 14 insertions, 3 deletions
diff --git a/test/ruby/test_time_tz.rb b/test/ruby/test_time_tz.rb
index 7c89b35c9a..37838908b9 100644
--- a/test/ruby/test_time_tz.rb
+++ b/test/ruby/test_time_tz.rb
@@ -607,6 +607,7 @@ module TestTimeTZ::WithTZ
assert_equal(6, t.wday)
assert_equal(244, t.yday)
assert_equal(t, time_class.new(2018, 9, 1, 12, in: tzarg))
+ assert_raise(ArgumentError) {time_class.new(2018, 9, 1, 12, 0, 0, tzarg, in: tzarg)}
end
def subtest_now(time_class, tz, tzarg, tzname, abbr, utc_offset)
diff --git a/timev.rb b/timev.rb
index d0989cb06d..202d5b367c 100644
--- a/timev.rb
+++ b/timev.rb
@@ -107,9 +107,19 @@ class Time
# (t4-t3)/3600.0 #=> 2.466666666666667
# (t6-t5)/3600.0 #=> 1.95
# (t8-t7)/3600.0 #=> 13.416666666666666
- def initialize(year = (now = true), mon = nil, mday = nil, hour = nil, min = nil, sec = nil, zone = nil, in: zone)
- zone = __builtin.arg!(:in)
- return __builtin.time_init_now(zone) if now
+ def initialize(year = (now = true), mon = nil, mday = nil, hour = nil, min = nil, sec = nil, zone = nil, in: nil)
+ if zone
+ if __builtin.arg!(:in)
+ raise ArgumentError, "timezone argument given as positional and keyword arguments"
+ end
+ else
+ zone = __builtin.arg!(:in)
+ end
+
+ if now
+ return __builtin.time_init_now(zone)
+ end
+
__builtin.time_init_args(year, mon, mday, hour, min, sec, zone)
end
end