lib/rbs/constant_table.rb in rbs-0.12.2 vs lib/rbs/constant_table.rb in rbs-0.13.0
- old
+ new
@@ -45,25 +45,29 @@
def resolve_constant_reference(name, context:)
raise "Context cannot be empty: Specify `[Namespace.root]`" if context.empty?
head, *tail = split_name(name)
+ raise unless head
+
head_constant = case
when name.absolute?
name_to_constant(TypeName.new(name: head, namespace: Namespace.root))
when context == [Namespace.root]
name_to_constant(TypeName.new(name: head, namespace: Namespace.root))
else
resolve_constant_reference_context(head, context: context) ||
resolve_constant_reference_inherit(head, scopes: constant_scopes(context.first.to_type_name))
end
- if head_constant
- tail.inject(head_constant) do |constant, name|
- resolve_constant_reference_inherit name,
- scopes: constant_scopes(constant.name),
- no_object: constant.name != BuiltinNames::Object.name
+ tail.inject(head_constant) do |constant, name|
+ if constant
+ resolve_constant_reference_inherit(
+ name,
+ scopes: constant_scopes(constant.name),
+ no_object: constant.name != BuiltinNames::Object.name
+ )
end
end
end
def resolve_constant_reference_context(name, context:)
@@ -148,12 +152,9 @@
scopes.unshift namespace
when Environment::ModuleEntry
constant_scopes0 BuiltinNames::Module.name, scopes: scopes
constant_scopes_module name, scopes: scopes
-
- else
- raise "Unexpected declaration: #{name} (#{entry.class})"
end
scopes
end
end