activerecord-ejection_seat 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.tool-versions +1 -1
- data/CHANGELOG.md +6 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +41 -52
- data/lib/activerecord-ejection_seat/version.rb +1 -1
- data/sorbet/rbi/gems/{activerecord@7.0.4.2.rbi → activerecord@7.0.4.3.rbi} +128 -128
- data/sorbet/rbi/gems/{activesupport@7.0.4.2.rbi → activesupport@7.0.4.3.rbi} +79 -103
- data/sorbet/rbi/gems/{concurrent-ruby@1.2.0.rbi → concurrent-ruby@1.2.2.rbi} +64 -89
- data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +19 -0
- data/sorbet/rbi/gems/i18n@1.13.0.rbi +2320 -0
- data/sorbet/rbi/gems/{irb@1.6.2.rbi → irb@1.6.4.rbi} +50 -35
- data/sorbet/rbi/gems/json@2.6.3.rbi +65 -73
- data/sorbet/rbi/gems/{minitest@5.17.0.rbi → minitest@5.18.0.rbi} +79 -48
- data/sorbet/rbi/gems/{parallel@1.22.1.rbi → parallel@1.23.0.rbi} +75 -79
- data/sorbet/rbi/gems/{parser@3.2.1.0.rbi → parser@3.2.2.1.rbi} +164 -164
- data/sorbet/rbi/gems/rainbow@3.1.1.rbi +11 -6
- data/sorbet/rbi/gems/rake@13.0.6.rbi +141 -0
- data/sorbet/rbi/gems/rbi@0.0.16.rbi +17 -17
- data/sorbet/rbi/gems/{regexp_parser@2.7.0.rbi → regexp_parser@2.8.0.rbi} +617 -449
- data/sorbet/rbi/gems/rexml@3.2.5.rbi +57 -0
- data/sorbet/rbi/gems/{rubocop-ast@1.26.0.rbi → rubocop-ast@1.28.1.rbi} +79 -60
- data/sorbet/rbi/gems/{rubocop-minitest@0.27.0.rbi → rubocop-minitest@0.31.0.rbi} +364 -222
- data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +24 -50
- data/sorbet/rbi/gems/rubocop-sorbet@0.7.0.rbi +0 -15
- data/sorbet/rbi/gems/{rubocop@1.45.1.rbi → rubocop@1.51.0.rbi} +2170 -1402
- data/sorbet/rbi/gems/{ruby-progressbar@1.11.0.rbi → ruby-progressbar@1.13.0.rbi} +382 -277
- data/sorbet/rbi/gems/sorbet-struct-comparable@1.3.0.rbi +18 -0
- data/sorbet/rbi/gems/{spoom@1.1.15.rbi → spoom@1.2.1.rbi} +621 -501
- data/sorbet/rbi/gems/{tapioca@0.10.5.rbi → tapioca@0.11.6.rbi} +293 -207
- data/sorbet/rbi/gems/{thor@1.2.1.rbi → thor@1.2.2.rbi} +76 -61
- data/sorbet/rbi/gems/{yard-sorbet@0.8.0.rbi → yard-sorbet@0.8.1.rbi} +13 -26
- data/sorbet/rbi/gems/{yard@0.9.28.rbi → yard@0.9.34.rbi} +1531 -345
- metadata +27 -33
- data/activerecord-ejection_seat.gemspec +0 -40
- data/sorbet/rbi/gems/i18n@1.12.0.rbi +0 -8
- data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +0 -8
- data/sorbet/rbi/gems/prettier_print@1.2.0.rbi +0 -8
- data/sorbet/rbi/gems/ruby-lsp@0.4.0.rbi +0 -14
- data/sorbet/rbi/gems/syntax_tree@6.0.0.rbi +0 -8
- data/sorbet/rbi/gems/webrick@1.7.0.rbi +0 -2498
- /data/sorbet/rbi/gems/{activemodel@7.0.4.2.rbi → activemodel@7.0.4.3.rbi} +0 -0
- /data/sorbet/rbi/gems/{reline@0.3.2.rbi → reline@0.3.3.rbi} +0 -0
- /data/sorbet/rbi/gems/{sqlite3@1.6.0.rbi → sqlite3@1.6.2.rbi} +0 -0
@@ -4,12 +4,6 @@
|
|
4
4
|
# This is an autogenerated file for types exported from the `minitest` gem.
|
5
5
|
# Please instead update this file by running `bin/tapioca gem minitest`.
|
6
6
|
|
7
|
-
# source://yard/0.9.28/lib/yard.rb#61
|
8
|
-
::RUBY18 = T.let(T.unsafe(nil), FalseClass)
|
9
|
-
|
10
|
-
# source://yard/0.9.28/lib/yard.rb#62
|
11
|
-
::RUBY19 = T.let(T.unsafe(nil), TrueClass)
|
12
|
-
|
13
7
|
# source://minitest//lib/minitest/test_task.rb#292
|
14
8
|
class Integer < ::Numeric
|
15
9
|
# source://minitest//lib/minitest/test_task.rb#293
|
@@ -346,6 +340,24 @@ module Minitest::Assertions
|
|
346
340
|
# source://minitest//lib/minitest/assertions.rb#355
|
347
341
|
def assert_path_exists(path, msg = T.unsafe(nil)); end
|
348
342
|
|
343
|
+
# For testing with pattern matching (only supported with Ruby 3.0 and later)
|
344
|
+
#
|
345
|
+
# # pass
|
346
|
+
# assert_pattern { [1,2,3] => [Integer, Integer, Integer] }
|
347
|
+
#
|
348
|
+
# # fail "length mismatch (given 3, expected 1)"
|
349
|
+
# assert_pattern { [1,2,3] => [Integer] }
|
350
|
+
#
|
351
|
+
# The bare <tt>=></tt> pattern will raise a NoMatchingPatternError on failure, which would
|
352
|
+
# normally be counted as a test error. This assertion rescues NoMatchingPatternError and
|
353
|
+
# generates a test failure. Any other exception will be raised as normal and generate a test
|
354
|
+
# error.
|
355
|
+
#
|
356
|
+
# @raise [NotImplementedError]
|
357
|
+
#
|
358
|
+
# source://minitest//lib/minitest/assertions.rb#374
|
359
|
+
def assert_pattern; end
|
360
|
+
|
349
361
|
# For testing with predicates. Eg:
|
350
362
|
#
|
351
363
|
# assert_predicate str, :empty?
|
@@ -354,7 +366,7 @@ module Minitest::Assertions
|
|
354
366
|
#
|
355
367
|
# str.must_be :empty?
|
356
368
|
#
|
357
|
-
# source://minitest//lib/minitest/assertions.rb#
|
369
|
+
# source://minitest//lib/minitest/assertions.rb#395
|
358
370
|
def assert_predicate(o1, op, msg = T.unsafe(nil)); end
|
359
371
|
|
360
372
|
# Fails unless the block raises one of +exp+. Returns the
|
@@ -378,36 +390,36 @@ module Minitest::Assertions
|
|
378
390
|
#
|
379
391
|
# assert_equal 'This is really bad', error.message
|
380
392
|
#
|
381
|
-
# source://minitest//lib/minitest/assertions.rb#
|
393
|
+
# source://minitest//lib/minitest/assertions.rb#422
|
382
394
|
def assert_raises(*exp); end
|
383
395
|
|
384
396
|
# Fails unless +obj+ responds to +meth+.
|
385
397
|
#
|
386
|
-
# source://minitest//lib/minitest/assertions.rb#
|
398
|
+
# source://minitest//lib/minitest/assertions.rb#453
|
387
399
|
def assert_respond_to(obj, meth, msg = T.unsafe(nil)); end
|
388
400
|
|
389
401
|
# Fails unless +exp+ and +act+ are #equal?
|
390
402
|
#
|
391
|
-
# source://minitest//lib/minitest/assertions.rb#
|
403
|
+
# source://minitest//lib/minitest/assertions.rb#463
|
392
404
|
def assert_same(exp, act, msg = T.unsafe(nil)); end
|
393
405
|
|
394
406
|
# +send_ary+ is a receiver, message and arguments.
|
395
407
|
#
|
396
408
|
# Fails unless the call returns a true value
|
397
409
|
#
|
398
|
-
# source://minitest//lib/minitest/assertions.rb#
|
410
|
+
# source://minitest//lib/minitest/assertions.rb#476
|
399
411
|
def assert_send(send_ary, m = T.unsafe(nil)); end
|
400
412
|
|
401
413
|
# Fails if the block outputs anything to stderr or stdout.
|
402
414
|
#
|
403
415
|
# See also: #assert_output
|
404
416
|
#
|
405
|
-
# source://minitest//lib/minitest/assertions.rb#
|
417
|
+
# source://minitest//lib/minitest/assertions.rb#492
|
406
418
|
def assert_silent; end
|
407
419
|
|
408
420
|
# Fails unless the block throws +sym+
|
409
421
|
#
|
410
|
-
# source://minitest//lib/minitest/assertions.rb#
|
422
|
+
# source://minitest//lib/minitest/assertions.rb#501
|
411
423
|
def assert_throws(sym, msg = T.unsafe(nil)); end
|
412
424
|
|
413
425
|
# Captures $stdout and $stderr into strings:
|
@@ -424,7 +436,7 @@ module Minitest::Assertions
|
|
424
436
|
# capture IO for subprocesses. Use #capture_subprocess_io for
|
425
437
|
# that.
|
426
438
|
#
|
427
|
-
# source://minitest//lib/minitest/assertions.rb#
|
439
|
+
# source://minitest//lib/minitest/assertions.rb#542
|
428
440
|
def capture_io; end
|
429
441
|
|
430
442
|
# Captures $stdout and $stderr into strings, using Tempfile to
|
@@ -441,7 +453,7 @@ module Minitest::Assertions
|
|
441
453
|
# NOTE: This method is approximately 10x slower than #capture_io so
|
442
454
|
# only use it when you need to test the output of a subprocess.
|
443
455
|
#
|
444
|
-
# source://minitest//lib/minitest/assertions.rb#
|
456
|
+
# source://minitest//lib/minitest/assertions.rb#575
|
445
457
|
def capture_subprocess_io; end
|
446
458
|
|
447
459
|
# Returns a diff between +exp+ and +act+. If there is no known
|
@@ -456,24 +468,24 @@ module Minitest::Assertions
|
|
456
468
|
|
457
469
|
# Returns details for exception +e+
|
458
470
|
#
|
459
|
-
# source://minitest//lib/minitest/assertions.rb#
|
471
|
+
# source://minitest//lib/minitest/assertions.rb#607
|
460
472
|
def exception_details(e, msg); end
|
461
473
|
|
462
474
|
# Fails after a given date (in the local time zone). This allows
|
463
475
|
# you to put time-bombs in your tests if you need to keep
|
464
476
|
# something around until a later date lest you forget about it.
|
465
477
|
#
|
466
|
-
# source://minitest//lib/minitest/assertions.rb#
|
478
|
+
# source://minitest//lib/minitest/assertions.rb#623
|
467
479
|
def fail_after(y, m, d, msg); end
|
468
480
|
|
469
481
|
# Fails with +msg+.
|
470
482
|
#
|
471
|
-
# source://minitest//lib/minitest/assertions.rb#
|
483
|
+
# source://minitest//lib/minitest/assertions.rb#630
|
472
484
|
def flunk(msg = T.unsafe(nil)); end
|
473
485
|
|
474
486
|
# Returns a proc that will output +msg+ along with the default message.
|
475
487
|
#
|
476
|
-
# source://minitest//lib/minitest/assertions.rb#
|
488
|
+
# source://minitest//lib/minitest/assertions.rb#638
|
477
489
|
def message(msg = T.unsafe(nil), ending = T.unsafe(nil), &default); end
|
478
490
|
|
479
491
|
# This returns a human-readable version of +obj+. By default
|
@@ -495,62 +507,62 @@ module Minitest::Assertions
|
|
495
507
|
|
496
508
|
# used for counting assertions
|
497
509
|
#
|
498
|
-
# source://minitest//lib/minitest/assertions.rb#
|
510
|
+
# source://minitest//lib/minitest/assertions.rb#649
|
499
511
|
def pass(_msg = T.unsafe(nil)); end
|
500
512
|
|
501
513
|
# Fails if +test+ is truthy.
|
502
514
|
#
|
503
|
-
# source://minitest//lib/minitest/assertions.rb#
|
515
|
+
# source://minitest//lib/minitest/assertions.rb#656
|
504
516
|
def refute(test, msg = T.unsafe(nil)); end
|
505
517
|
|
506
518
|
# Fails if +obj+ is empty.
|
507
519
|
#
|
508
|
-
# source://minitest//lib/minitest/assertions.rb#
|
520
|
+
# source://minitest//lib/minitest/assertions.rb#664
|
509
521
|
def refute_empty(obj, msg = T.unsafe(nil)); end
|
510
522
|
|
511
523
|
# Fails if <tt>exp == act</tt>.
|
512
524
|
#
|
513
525
|
# For floats use refute_in_delta.
|
514
526
|
#
|
515
|
-
# source://minitest//lib/minitest/assertions.rb#
|
527
|
+
# source://minitest//lib/minitest/assertions.rb#675
|
516
528
|
def refute_equal(exp, act, msg = T.unsafe(nil)); end
|
517
529
|
|
518
530
|
# For comparing Floats. Fails if +exp+ is within +delta+ of +act+.
|
519
531
|
#
|
520
532
|
# refute_in_delta Math::PI, (22.0 / 7.0)
|
521
533
|
#
|
522
|
-
# source://minitest//lib/minitest/assertions.rb#
|
534
|
+
# source://minitest//lib/minitest/assertions.rb#687
|
523
535
|
def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end
|
524
536
|
|
525
537
|
# For comparing Floats. Fails if +exp+ and +act+ have a relative error
|
526
538
|
# less than +epsilon+.
|
527
539
|
#
|
528
|
-
# source://minitest//lib/minitest/assertions.rb#
|
540
|
+
# source://minitest//lib/minitest/assertions.rb#699
|
529
541
|
def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end
|
530
542
|
|
531
543
|
# Fails if +collection+ includes +obj+.
|
532
544
|
#
|
533
|
-
# source://minitest//lib/minitest/assertions.rb#
|
545
|
+
# source://minitest//lib/minitest/assertions.rb#706
|
534
546
|
def refute_includes(collection, obj, msg = T.unsafe(nil)); end
|
535
547
|
|
536
548
|
# Fails if +obj+ is an instance of +cls+.
|
537
549
|
#
|
538
|
-
# source://minitest//lib/minitest/assertions.rb#
|
550
|
+
# source://minitest//lib/minitest/assertions.rb#717
|
539
551
|
def refute_instance_of(cls, obj, msg = T.unsafe(nil)); end
|
540
552
|
|
541
553
|
# Fails if +obj+ is a kind of +cls+.
|
542
554
|
#
|
543
|
-
# source://minitest//lib/minitest/assertions.rb#
|
555
|
+
# source://minitest//lib/minitest/assertions.rb#727
|
544
556
|
def refute_kind_of(cls, obj, msg = T.unsafe(nil)); end
|
545
557
|
|
546
558
|
# Fails if +matcher+ <tt>=~</tt> +obj+.
|
547
559
|
#
|
548
|
-
# source://minitest//lib/minitest/assertions.rb#
|
560
|
+
# source://minitest//lib/minitest/assertions.rb#735
|
549
561
|
def refute_match(matcher, obj, msg = T.unsafe(nil)); end
|
550
562
|
|
551
563
|
# Fails if +obj+ is nil.
|
552
564
|
#
|
553
|
-
# source://minitest//lib/minitest/assertions.rb#
|
565
|
+
# source://minitest//lib/minitest/assertions.rb#745
|
554
566
|
def refute_nil(obj, msg = T.unsafe(nil)); end
|
555
567
|
|
556
568
|
# Fails if +o1+ is not +op+ +o2+. Eg:
|
@@ -558,14 +570,30 @@ module Minitest::Assertions
|
|
558
570
|
# refute_operator 1, :>, 2 #=> pass
|
559
571
|
# refute_operator 1, :<, 2 #=> fail
|
560
572
|
#
|
561
|
-
# source://minitest//lib/minitest/assertions.rb#
|
573
|
+
# source://minitest//lib/minitest/assertions.rb#780
|
562
574
|
def refute_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end
|
563
575
|
|
564
576
|
# Fails if +path+ exists.
|
565
577
|
#
|
566
|
-
# source://minitest//lib/minitest/assertions.rb#
|
578
|
+
# source://minitest//lib/minitest/assertions.rb#789
|
567
579
|
def refute_path_exists(path, msg = T.unsafe(nil)); end
|
568
580
|
|
581
|
+
# For testing with pattern matching (only supported with Ruby 3.0 and later)
|
582
|
+
#
|
583
|
+
# # pass
|
584
|
+
# refute_pattern { [1,2,3] => [String] }
|
585
|
+
#
|
586
|
+
# # fail "NoMatchingPatternError expected, but nothing was raised."
|
587
|
+
# refute_pattern { [1,2,3] => [Integer, Integer, Integer] }
|
588
|
+
#
|
589
|
+
# This assertion expects a NoMatchingPatternError exception, and will fail if none is raised. Any
|
590
|
+
# other exceptions will be raised as normal and generate a test error.
|
591
|
+
#
|
592
|
+
# @raise [NotImplementedError]
|
593
|
+
#
|
594
|
+
# source://minitest//lib/minitest/assertions.rb#762
|
595
|
+
def refute_pattern; end
|
596
|
+
|
569
597
|
# For testing with predicates.
|
570
598
|
#
|
571
599
|
# refute_predicate str, :empty?
|
@@ -574,17 +602,17 @@ module Minitest::Assertions
|
|
574
602
|
#
|
575
603
|
# str.wont_be :empty?
|
576
604
|
#
|
577
|
-
# source://minitest//lib/minitest/assertions.rb#
|
605
|
+
# source://minitest//lib/minitest/assertions.rb#803
|
578
606
|
def refute_predicate(o1, op, msg = T.unsafe(nil)); end
|
579
607
|
|
580
608
|
# Fails if +obj+ responds to the message +meth+.
|
581
609
|
#
|
582
|
-
# source://minitest//lib/minitest/assertions.rb#
|
610
|
+
# source://minitest//lib/minitest/assertions.rb#811
|
583
611
|
def refute_respond_to(obj, meth, msg = T.unsafe(nil)); end
|
584
612
|
|
585
613
|
# Fails if +exp+ is the same (by object identity) as +act+.
|
586
614
|
#
|
587
|
-
# source://minitest//lib/minitest/assertions.rb#
|
615
|
+
# source://minitest//lib/minitest/assertions.rb#820
|
588
616
|
def refute_same(exp, act, msg = T.unsafe(nil)); end
|
589
617
|
|
590
618
|
# Skips the current run. If run in verbose-mode, the skipped run
|
@@ -593,7 +621,7 @@ module Minitest::Assertions
|
|
593
621
|
#
|
594
622
|
# @raise [Minitest::Skip]
|
595
623
|
#
|
596
|
-
# source://minitest//lib/minitest/assertions.rb#
|
624
|
+
# source://minitest//lib/minitest/assertions.rb#833
|
597
625
|
def skip(msg = T.unsafe(nil), bt = T.unsafe(nil)); end
|
598
626
|
|
599
627
|
# Skips the current run until a given date (in the local time
|
@@ -601,14 +629,14 @@ module Minitest::Assertions
|
|
601
629
|
# date, but still holds you accountable and prevents you from
|
602
630
|
# forgetting it.
|
603
631
|
#
|
604
|
-
# source://minitest//lib/minitest/assertions.rb#
|
632
|
+
# source://minitest//lib/minitest/assertions.rb#845
|
605
633
|
def skip_until(y, m, d, msg); end
|
606
634
|
|
607
635
|
# Was this testcase skipped? Meant for #teardown.
|
608
636
|
#
|
609
637
|
# @return [Boolean]
|
610
638
|
#
|
611
|
-
# source://minitest//lib/minitest/assertions.rb#
|
639
|
+
# source://minitest//lib/minitest/assertions.rb#854
|
612
640
|
def skipped?; end
|
613
641
|
|
614
642
|
# Returns things to diff [expect, butwas], or [nil, nil] if nothing to diff.
|
@@ -751,6 +779,9 @@ class Minitest::Expectation < ::Struct
|
|
751
779
|
# source://minitest//lib/minitest/spec.rb#25
|
752
780
|
def must_output(*args, **_arg1); end
|
753
781
|
|
782
|
+
# source://minitest//lib/minitest/spec.rb#25
|
783
|
+
def must_pattern_match(*args, **_arg1); end
|
784
|
+
|
754
785
|
# source://minitest//lib/minitest/spec.rb#25
|
755
786
|
def must_raise(*args, **_arg1); end
|
756
787
|
|
@@ -805,6 +836,9 @@ class Minitest::Expectation < ::Struct
|
|
805
836
|
# source://minitest//lib/minitest/spec.rb#25
|
806
837
|
def wont_match(*args, **_arg1); end
|
807
838
|
|
839
|
+
# source://minitest//lib/minitest/spec.rb#25
|
840
|
+
def wont_pattern_match(*args, **_arg1); end
|
841
|
+
|
808
842
|
# source://minitest//lib/minitest/spec.rb#25
|
809
843
|
def wont_respond_to(*args, **_arg1); end
|
810
844
|
|
@@ -879,6 +913,9 @@ module Minitest::Expectations
|
|
879
913
|
# source://minitest//lib/minitest/spec.rb#15
|
880
914
|
def must_output(*args, **_arg1); end
|
881
915
|
|
916
|
+
# source://minitest//lib/minitest/spec.rb#15
|
917
|
+
def must_pattern_match(*args, **_arg1); end
|
918
|
+
|
882
919
|
# source://minitest//lib/minitest/spec.rb#15
|
883
920
|
def must_raise(*args, **_arg1); end
|
884
921
|
|
@@ -930,6 +967,9 @@ module Minitest::Expectations
|
|
930
967
|
# source://minitest//lib/minitest/spec.rb#15
|
931
968
|
def wont_match(*args, **_arg1); end
|
932
969
|
|
970
|
+
# source://minitest//lib/minitest/spec.rb#15
|
971
|
+
def wont_pattern_match(*args, **_arg1); end
|
972
|
+
|
933
973
|
# source://minitest//lib/minitest/spec.rb#15
|
934
974
|
def wont_respond_to(*args, **_arg1); end
|
935
975
|
end
|
@@ -1016,7 +1056,7 @@ class Minitest::Mock
|
|
1016
1056
|
def class(*args, **kwargs, &b); end
|
1017
1057
|
|
1018
1058
|
# Expect that method +name+ is called, optionally with +args+ (and
|
1019
|
-
# +kwargs+ or a +blk
|
1059
|
+
# +kwargs+ or a +blk+), and returns +retval+.
|
1020
1060
|
#
|
1021
1061
|
# @mock.expect(:meaning_of_life, 42)
|
1022
1062
|
# @mock.meaning_of_life # => 42
|
@@ -2272,15 +2312,6 @@ class Module
|
|
2272
2312
|
def infect_an_assertion(meth, new_name, dont_flip = T.unsafe(nil)); end
|
2273
2313
|
end
|
2274
2314
|
|
2275
|
-
# source://activesupport/7.0.4/lib/active_support/core_ext/module/delegation.rb#13
|
2276
|
-
Module::DELEGATION_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)
|
2277
|
-
|
2278
|
-
# source://activesupport/7.0.4/lib/active_support/core_ext/module/delegation.rb#14
|
2279
|
-
Module::DELEGATION_RESERVED_METHOD_NAMES = T.let(T.unsafe(nil), Set)
|
2280
|
-
|
2281
|
-
# source://activesupport/7.0.4/lib/active_support/core_ext/module/delegation.rb#10
|
2282
|
-
Module::RUBY_RESERVED_KEYWORDS = T.let(T.unsafe(nil), Array)
|
2283
|
-
|
2284
2315
|
# source://minitest//lib/minitest/spec.rb#347
|
2285
2316
|
class Object < ::BasicObject
|
2286
2317
|
include ::Kernel
|