rbs
rbs copied to clipboard
Decls added with `RBS::Environment#<<` disappear after `RBS::Environment#resolve_type_names` in RBS v3 or later
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)>