Skip to content

Commit 45b4356

Browse files
authored
Merge pull request #2369 from ksss/subtractor-civar
Fix subtraction of civar
2 parents 3c2f331 + ae509ee commit 45b4356

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

lib/rbs/subtractor.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,9 @@ def call(minuend = @minuend, context: nil)
107107
each_member(owner).any? do |m|
108108
case m
109109
when AST::Members::InstanceVariable
110-
m.name == name
110+
m.name == name && kind == :instance
111+
when AST::Members::ClassInstanceVariable
112+
m.name == name && kind == :singleton
111113
when AST::Members::Attribute
112114
ivar_name = m.ivar_name == false ? nil : m.ivar_name || :"@#{m.name}"
113115
ivar_name == name && m.kind == kind

test/rbs/subtractor_test.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,34 @@ class C
472472
RBS
473473
end
474474

475+
def test_civar
476+
decls = to_decls(<<~RBS)
477+
class C
478+
@v1: untyped
479+
self.@v1: untyped
480+
@v2: untyped
481+
self.@v2: untyped
482+
end
483+
RBS
484+
485+
env = to_env(<<~RBS)
486+
class C
487+
self.@v1: untyped
488+
end
489+
RBS
490+
491+
subtracted = RBS::Subtractor.new(decls, env).call
492+
493+
assert_subtracted <<~RBS, subtracted
494+
class C
495+
@v1: untyped
496+
497+
@v2: untyped
498+
self.@v2: untyped
499+
end
500+
RBS
501+
end
502+
475503
def test_cvar
476504
decls = to_decls(<<~RBS)
477505
class C

0 commit comments

Comments
 (0)