rbs icon indicating copy to clipboard operation
rbs copied to clipboard

Decls added with `RBS::Environment#<<` disappear after `RBS::Environment#resolve_type_names` in RBS v3 or later

Open ksss opened this issue 2 years ago • 0 comments

Decl added using RBS::Environment#<< will disappear from within env after RBS::Environment#resolve_type_names. But, Decl added using RBS::Environment#add_signature will remain. Is this intended behavior?

p RBS::VERSION
#=> "3.0.4"

env = RBS::Environment.new
_, _, decls = RBS::Parser.parse_signature("class Foo\nend")
env << decls.first

p env
#=> #<RBS::Environment @declarations=(1 items) @class_decls=(1 items) @class_alias_decls=(0 items) @interface_decls=(0 items) @type_alias_decls=(0 items) @constant_decls=(0 items) @global_decls=(0 items)>

p env.resolve_type_names
#=> #<RBS::Environment @declarations=(0 items) @class_decls=(0 items) @class_alias_decls=(0 items) @interface_decls=(0 items) @type_alias_decls=(0 items) @constant_decls=(0 items) @global_decls=(0 items)>

buffer, directives, decls = RBS::Parser.parse_signature("class Bar\nend")
env.add_signature(buffer: buffer, directives: directives, decls: decls)

p env
#=> #<RBS::Environment @declarations=(2 items) @class_decls=(1 items) @class_alias_decls=(0 items) @interface_decls=(0 items) @type_alias_decls=(0 items) @constant_decls=(0 items) @global_decls=(0 items)>

p env.resolve_type_names
#=> #<RBS::Environment @declarations=(1 items) @class_decls=(1 items) @class_alias_decls=(0 items) @interface_decls=(0 items) @type_alias_decls=(0 items) @constant_decls=(0 items) @global_decls=(0 items)>

ksss avatar Apr 02 '23 14:04 ksss