Skip to content

rbs/test: stack level too deep when calling super from prepend #1710

Open
@larskanis

Description

@larskanis

Similar issue to #478 .

Example:

# test-attach.rb
class TestAttach
  def attach
    puts "attach 2"
  end

  module RegisterAttach
    def attach
      puts "attach 1"
      super
    end
  end
  prepend RegisterAttach
end

TestAttach.new.attach
# sig/test-attach.rbs
class TestAttach
  def attach: () -> String
end

Run without rbs/test is OK:

$ ruby test-attach.rb 
attach 1
attach 2

Run with rbs/test fails with stack level too deep:

$ RBS_TEST_TARGET='TestAttach' ruby -r rbs/test/setup test-attach.rb 
[...]
attach 1
attach 1
/home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/type_check.rb:60:in `method_call': stack level too deep (SystemStackError)
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/type_check.rb:26:in `block in overloaded_call'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/type_check.rb:25:in `map'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/type_check.rb:25:in `overloaded_call'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/tester.rb:152:in `call'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/observer.rb:10:in `notify'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/hook.rb:178:in `ensure in attach__with__RBS_TEST_16c021_404c48f8'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/hook.rb:178:in `attach__with__RBS_TEST_16c021_404c48f8'
	from test-attach.rb:9:in `attach'
	 ... 7697 levels...
	from test-attach.rb:9:in `attach'
	from /home/lars/.rvm/gems/ruby-3.3.0/gems/rbs-3.4.1/lib/rbs/test/hook.rb:146:in `attach__with__RBS_TEST_16c021_404c48f8'
	from test-attach.rb:9:in `attach'
	from test-attach.rb:15:in `<main>'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions