class RubyIndexer::RBSIndexerTest
def test_parse_simple_rbs
def test_parse_simple_rbs rbs = <<~RBS class File def self?.open: (String name, ?String mode, ?Integer perm) -> IO? | [T] (String name, ?String mode, ?Integer perm) { (IO) -> T } -> T end RBS signatures = parse_rbs_methods(rbs, "open") assert_equal(2, signatures.length) parameters = signatures[0].parameters assert_equal([:name, :mode, :perm], parameters.map(&:name)) assert_kind_of(Entry::RequiredParameter, parameters[0]) assert_kind_of(Entry::OptionalParameter, parameters[1]) assert_kind_of(Entry::OptionalParameter, parameters[2]) parameters = signatures[1].parameters assert_equal([:name, :mode, :perm, :"<anonymous block>"], parameters.map(&:name)) assert_kind_of(Entry::RequiredParameter, parameters[0]) assert_kind_of(Entry::OptionalParameter, parameters[1]) assert_kind_of(Entry::OptionalParameter, parameters[2]) assert_kind_of(Entry::BlockParameter, parameters[3]) end