rbi 0.4.0 → 0.4.1
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/lib/rbi/rbs_printer.rb +55 -45
- data/lib/rbi/type.rb +8 -1
- data/lib/rbi/version.rb +1 -1
- data/rbi/rbi.rbi +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8945af1db330f337d9e956a588855b37d5fdeda9d9b4d14aae567205f283291e
|
|
4
|
+
data.tar.gz: 43c623a2db05aa3c7cba0da55a62717319009104e0b1f1cc2ce9b380e9c00389
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a748432dd7758173966613ec2a6b067d9effb717c68a8bfcd6c2db826138892af9c4166f171546a0c78ad3ad0ef24a1e8a72b8d453b7502f4114123fb878d7b8
|
|
7
|
+
data.tar.gz: abd31c2df6e52e469b0018ac4a5b1466d9df6b670ae409fa8a9d7b642c06787e60f1439b003a7c3523fd1af2b8710100578bb2b257aa3ec6416cfeae18a1af83
|
data/lib/rbi/rbs_printer.rb
CHANGED
|
@@ -428,26 +428,29 @@ module RBI
|
|
|
428
428
|
print("[#{sig.type_params.join(", ")}] ")
|
|
429
429
|
end
|
|
430
430
|
|
|
431
|
-
|
|
432
|
-
sig_block_param = sig.params.find { |param| param.name == block_param&.name }
|
|
431
|
+
raise Error, "Arity mismatch between method and signature" if sig.params.size != node.params.size
|
|
433
432
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
sig_params.reject! do |param|
|
|
437
|
-
param.name == block_param.name
|
|
438
|
-
end
|
|
433
|
+
block_params, params = sig.params.zip(node.params).partition do |_sig_param, method_param|
|
|
434
|
+
method_param.is_a?(BlockParam)
|
|
439
435
|
end
|
|
440
436
|
|
|
441
|
-
|
|
437
|
+
raise Error, "Multiple block parameters found" if block_params.size > 1
|
|
438
|
+
|
|
439
|
+
block_param = block_params.first if block_params.any?
|
|
440
|
+
|
|
441
|
+
unless params.empty?
|
|
442
442
|
print("(")
|
|
443
|
-
|
|
443
|
+
params.each_with_index do |(sig_param, method_param), index|
|
|
444
444
|
print(", ") if index > 0
|
|
445
|
-
print_sig_param(
|
|
445
|
+
print_sig_param(
|
|
446
|
+
sig_param,
|
|
447
|
+
method_param, #: as !nil
|
|
448
|
+
)
|
|
446
449
|
end
|
|
447
450
|
print(") ")
|
|
448
451
|
end
|
|
449
|
-
if
|
|
450
|
-
block_type =
|
|
452
|
+
if (sig_param = block_param&.first)
|
|
453
|
+
block_type = sig_param.type
|
|
451
454
|
block_type = Type.parse_string(block_type) if block_type.is_a?(String)
|
|
452
455
|
|
|
453
456
|
block_is_nilable = false
|
|
@@ -490,30 +493,33 @@ module RBI
|
|
|
490
493
|
print("[#{sig.type_params.join(", ")}] ")
|
|
491
494
|
end
|
|
492
495
|
|
|
493
|
-
|
|
494
|
-
sig_block_param = sig.params.find { |param| param.name == block_param&.name }
|
|
496
|
+
raise Error, "Arity mismatch between method and signature" if sig.params.size != node.params.size
|
|
495
497
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
sig_params.reject! do |param|
|
|
499
|
-
param.name == block_param.name
|
|
500
|
-
end
|
|
498
|
+
block_params, params = sig.params.zip(node.params).partition do |_sig_param, method_param|
|
|
499
|
+
method_param.is_a?(BlockParam)
|
|
501
500
|
end
|
|
502
501
|
|
|
503
|
-
|
|
502
|
+
raise Error, "Multiple block parameters found" if block_params.size > 1
|
|
503
|
+
|
|
504
|
+
block_param = block_params.first if block_params.any?
|
|
505
|
+
|
|
506
|
+
unless params.empty?
|
|
504
507
|
printl("(")
|
|
505
508
|
indent
|
|
506
|
-
|
|
509
|
+
params.each_with_index do |(sig_param, method_param), index|
|
|
507
510
|
printt
|
|
508
|
-
print_sig_param(
|
|
509
|
-
|
|
511
|
+
print_sig_param(
|
|
512
|
+
sig_param,
|
|
513
|
+
method_param, #: as !nil
|
|
514
|
+
)
|
|
515
|
+
print(",") if index < params.size - 1
|
|
510
516
|
printn
|
|
511
517
|
end
|
|
512
518
|
dedent
|
|
513
519
|
printt(") ")
|
|
514
520
|
end
|
|
515
|
-
if
|
|
516
|
-
block_type =
|
|
521
|
+
if (block_param = block_param&.first)
|
|
522
|
+
block_type = block_param.type
|
|
517
523
|
block_type = Type.parse_string(block_type) if block_type.is_a?(String)
|
|
518
524
|
|
|
519
525
|
block_is_nilable = false
|
|
@@ -591,11 +597,8 @@ module RBI
|
|
|
591
597
|
# @override
|
|
592
598
|
#: (RestParam node) -> void
|
|
593
599
|
def visit_rest_param(node)
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
else
|
|
597
|
-
print("*untyped")
|
|
598
|
-
end
|
|
600
|
+
print("*untyped")
|
|
601
|
+
print(" #{node.name}") if @positional_names && !node.anonymous?
|
|
599
602
|
end
|
|
600
603
|
|
|
601
604
|
# @override
|
|
@@ -614,7 +617,7 @@ module RBI
|
|
|
614
617
|
#: (KwRestParam node) -> void
|
|
615
618
|
def visit_kw_rest_param(node)
|
|
616
619
|
print("**untyped")
|
|
617
|
-
print(" #{node.name}")
|
|
620
|
+
print(" #{node.name}") unless node.anonymous?
|
|
618
621
|
end
|
|
619
622
|
|
|
620
623
|
# @override
|
|
@@ -873,39 +876,46 @@ module RBI
|
|
|
873
876
|
printl("# #{loc}") if loc && print_locs
|
|
874
877
|
end
|
|
875
878
|
|
|
876
|
-
#: (
|
|
877
|
-
def print_sig_param(
|
|
878
|
-
|
|
879
|
+
#: (SigParam sig_param, Param method_param) -> void
|
|
880
|
+
def print_sig_param(sig_param, method_param)
|
|
881
|
+
if !method_param.anonymous? && sig_param.name != method_param.name
|
|
882
|
+
raise Error,
|
|
883
|
+
"Mismatched parameter names: #{sig_param.name} vs #{method_param.name}"
|
|
884
|
+
end
|
|
879
885
|
|
|
880
|
-
|
|
886
|
+
type = parse_type(sig_param.type).rbs_string
|
|
881
887
|
|
|
882
|
-
case
|
|
888
|
+
case method_param
|
|
883
889
|
when ReqParam
|
|
884
890
|
if @positional_names
|
|
885
|
-
print("#{type} #{
|
|
891
|
+
print("#{type} #{sig_param.name}")
|
|
886
892
|
else
|
|
887
893
|
print(type)
|
|
888
894
|
end
|
|
889
895
|
when OptParam
|
|
890
896
|
if @positional_names
|
|
891
|
-
print("?#{type} #{
|
|
897
|
+
print("?#{type} #{sig_param.name}")
|
|
892
898
|
else
|
|
893
899
|
print("?#{type}")
|
|
894
900
|
end
|
|
895
901
|
when RestParam
|
|
896
|
-
if
|
|
897
|
-
print("*#{type} #{param.name}")
|
|
898
|
-
else
|
|
902
|
+
if method_param.anonymous? || !@positional_names
|
|
899
903
|
print("*#{type}")
|
|
904
|
+
else
|
|
905
|
+
print("*#{type} #{sig_param.name}")
|
|
900
906
|
end
|
|
901
907
|
when KwParam
|
|
902
|
-
print("#{
|
|
908
|
+
print("#{sig_param.name}: #{type}")
|
|
903
909
|
when KwOptParam
|
|
904
|
-
print("?#{
|
|
910
|
+
print("?#{sig_param.name}: #{type}")
|
|
905
911
|
when KwRestParam
|
|
906
|
-
|
|
912
|
+
if method_param.anonymous?
|
|
913
|
+
print("**#{type}")
|
|
914
|
+
else
|
|
915
|
+
print("**#{type} #{sig_param.name}")
|
|
916
|
+
end
|
|
907
917
|
else
|
|
908
|
-
raise Error, "Unexpected param type: #{
|
|
918
|
+
raise Error, "Unexpected param type: #{method_param.class} for param #{sig_param.name}"
|
|
909
919
|
end
|
|
910
920
|
end
|
|
911
921
|
|
data/lib/rbi/type.rb
CHANGED
|
@@ -720,7 +720,14 @@ module RBI
|
|
|
720
720
|
if @types.empty?
|
|
721
721
|
"{}"
|
|
722
722
|
else
|
|
723
|
-
"{ " + @types.map
|
|
723
|
+
"{ " + @types.map do |name, type|
|
|
724
|
+
case name
|
|
725
|
+
when Symbol
|
|
726
|
+
"#{name}: #{type.to_rbi}"
|
|
727
|
+
when String
|
|
728
|
+
"#{name.inspect} => #{type.to_rbi}"
|
|
729
|
+
end
|
|
730
|
+
end.join(", ") + " }"
|
|
724
731
|
end
|
|
725
732
|
end
|
|
726
733
|
|
data/lib/rbi/version.rb
CHANGED
data/rbi/rbi.rbi
CHANGED
|
@@ -1777,8 +1777,8 @@ class RBI::RBSPrinter < ::RBI::Visitor
|
|
|
1777
1777
|
sig { params(node: ::RBI::Param, last: T::Boolean).void }
|
|
1778
1778
|
def print_param_comment_leading_space(node, last:); end
|
|
1779
1779
|
|
|
1780
|
-
sig { params(
|
|
1781
|
-
def print_sig_param(
|
|
1780
|
+
sig { params(sig_param: ::RBI::SigParam, method_param: ::RBI::Param).void }
|
|
1781
|
+
def print_sig_param(sig_param, method_param); end
|
|
1782
1782
|
|
|
1783
1783
|
sig { params(node: ::RBI::SigParam, last: T::Boolean).void }
|
|
1784
1784
|
def print_sig_param_comment_leading_space(node, last:); end
|