Skip to content

Commit 7f69b0b

Browse files
committed
Print allow_incompatible_override_visibility modifier
Signed-off-by: Alexandre Terrasa <[email protected]>
1 parent 584b7ee commit 7f69b0b

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

lib/rbi/printer.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,8 @@ def sig_modifiers(node)
800800
if node.is_override
801801
modifiers << if node.allow_incompatible_override
802802
"override(allow_incompatible: true)"
803+
elsif node.allow_incompatible_override_visibility
804+
"override(allow_incompatible: :visibility)"
803805
else
804806
"override"
805807
end

test/rbi/printer_test.rb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,22 +210,28 @@ def test_print_methods_with_signatures
210210
sig4.is_override = true
211211
sig4.allow_incompatible_override = true
212212

213-
sig5 = Sig.new(return_type: "T.type_parameter(:V)")
214-
sig5.type_params << "U"
215-
sig5.type_params << "V"
216-
sig5 << SigParam.new("a", "T.type_parameter(:U)")
213+
sig5 = Sig.new(return_type: "T.nilable(String)")
214+
sig5.is_override = true
215+
sig5.allow_incompatible_override_visibility = true
216+
217+
sig6 = Sig.new(return_type: "T.type_parameter(:V)")
218+
sig6.type_params << "U"
219+
sig6.type_params << "V"
220+
sig6 << SigParam.new("a", "T.type_parameter(:U)")
217221

218222
method = Method.new("foo")
219223
method.sigs << sig1
220224
method.sigs << sig2
221225
method.sigs << sig3
222226
method.sigs << sig4
223227
method.sigs << sig5
228+
method.sigs << sig6
224229
assert_equal(<<~RBI, method.string)
225230
sig { void }
226231
sig { params(a: A, b: T.nilable(B), b: T.proc.void).returns(R) }
227232
sig { abstract.override.overridable.checked(:never).void }
228233
sig { override(allow_incompatible: true).returns(T.nilable(String)) }
234+
sig { override(allow_incompatible: :visibility).returns(T.nilable(String)) }
229235
sig { type_parameters(:U, :V).params(a: T.type_parameter(:U)).returns(T.type_parameter(:V)) }
230236
def foo; end
231237
RBI

0 commit comments

Comments
 (0)