@@ -495,7 +495,7 @@ def resolve_type_names(only: nil)
495495 each_rbs_source do |source |
496496 resolve = source . directives . find { _1 . is_a? ( AST ::Directives ::ResolveTypeNames ) } #: AST::Directives::ResolveTypeNames?
497497 if !resolve || resolve . value
498- _ , decls = resolve_signature ( resolver , table , source . directives , source . declarations )
498+ _ , decls = resolve_signature ( resolver , table , source . directives , source . declarations , only : only )
499499 else
500500 decls = source . declarations
501501 end
@@ -504,7 +504,15 @@ def resolve_type_names(only: nil)
504504
505505 each_ruby_source do |source |
506506 decls = source . declarations . map do |decl |
507- resolve_ruby_decl ( resolver , decl , context : nil , prefix : Namespace . root )
507+ if only
508+ if only . include? ( decl )
509+ resolve_ruby_decl ( resolver , decl , context : nil , prefix : Namespace . root )
510+ else
511+ decl
512+ end
513+ else
514+ resolve_ruby_decl ( resolver , decl , context : nil , prefix : Namespace . root )
515+ end
508516 end
509517
510518 env . add_source ( Source ::Ruby . new ( source . buffer , source . prism_result , decls , source . diagnostics ) )
@@ -845,20 +853,33 @@ def absolute_type(resolver, map, type, context:)
845853 end
846854
847855 def inspect
848- ivars = %i[ @declarations @class_decls @class_alias_decls @interface_decls @type_alias_decls @constant_decls @global_decls ]
856+ ivars = %i[ @sources @class_decls @class_alias_decls @interface_decls @type_alias_decls @constant_decls @global_decls ]
849857 "\# <RBS::Environment #{ ivars . map { |iv | "#{ iv } =(#{ instance_variable_get ( iv ) . size } items)" } . join ( ' ' ) } >"
850858 end
851859
852860 def buffers
853861 sources . map ( &:buffer )
854862 end
855863
856- def unload ( buffers )
857- env = Environment . new
858- bufs = buffers . to_set
864+ def unload ( paths )
865+ ps = Set [ ]
866+ paths . each do |path |
867+ if path . is_a? ( Buffer )
868+ ps << path . name
869+ else
870+ ps << path
871+ end
872+ end
873+
874+ env = Environment . new ( )
859875
860876 each_rbs_source do |source |
861- next if bufs . include? ( source . buffer )
877+ next if ps . include? ( source . buffer . name )
878+ env . add_source ( source )
879+ end
880+
881+ each_ruby_source do |source |
882+ next if ps . include? ( source . buffer . name )
862883 env . add_source ( source )
863884 end
864885
0 commit comments