Skip to content

Commit b2f05d3

Browse files
authored
Merge pull request #2514 from ruby/inline-minor-fix
Inline minor fix
2 parents 075742b + ba2ac33 commit b2f05d3

File tree

4 files changed

+42
-13
lines changed

4 files changed

+42
-13
lines changed

Gemfile.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ GEM
176176
zlib (3.2.1)
177177

178178
PLATFORMS
179+
ruby
179180

180181
DEPENDENCIES
181182
abbrev

lib/rbs/environment.rb

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

sig/environment.rbs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,17 +84,24 @@ module RBS
8484
# When `only` is given, it skips other _top-level_ declarations not included in the collection.
8585
# This helps running resolution faster in the case of _partial updates_.
8686
#
87-
def resolve_type_names: (?only: Set[AST::Declarations::t]?) -> Environment
87+
def resolve_type_names: (?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?) -> Environment
8888

89-
def resolve_signature: (Resolver::TypeNameResolver, UseMap::Table, Array[AST::Directives::t], Array[AST::Declarations::t], ?only: Set[AST::Declarations::t]?) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
89+
def resolve_signature: (
90+
Resolver::TypeNameResolver,
91+
UseMap::Table,
92+
Array[AST::Directives::t],
93+
Array[AST::Declarations::t],
94+
?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?
95+
) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
9096

9197
def inspect: () -> String
9298

9399
def buffers: () -> Array[Buffer]
94100

95101
# Remove declarations and directives that are loaded from `buffers`
96102
#
97-
def unload: (Set[Buffer] buffers) -> Environment
103+
def unload: (Set[Pathname] paths) -> Environment
104+
| %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
98105

99106
# Returns true if an interface with the type name is defined
100107
#

sig/source.rbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module RBS
22
module Source
33
type t = RBS | Ruby
4-
4+
55
class RBS
66
attr_reader buffer: Buffer
77

@@ -28,9 +28,9 @@ module RBS
2828

2929
attr_reader declarations: Array[AST::Ruby::Declarations::t]
3030

31-
attr_reader diagnostics: Array[untyped]
31+
attr_reader diagnostics: Array[InlineParser::Diagnostic::t]
3232

33-
def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[untyped]) -> void
33+
def initialize: (Buffer, Prism::ParseResult, Array[AST::Ruby::Declarations::t], Array[InlineParser::Diagnostic::t]) -> void
3434

3535
def each_type_name: () { (TypeName) -> void } -> void
3636
| () -> Enumerator[TypeName]

0 commit comments

Comments
 (0)