@@ -1564,6 +1564,58 @@ def foo
15641564 end
15651565 end
15661566
1567+ def test_parse__module_self
1568+ result = parse ( <<~RUBY )
1569+ # @rbs module-self: _Each[String]
1570+ module Enumerable2
1571+ end
1572+ RUBY
1573+
1574+ assert_empty result . diagnostics
1575+
1576+ result . declarations [ 0 ] . tap do |decl |
1577+ assert_instance_of RBS ::AST ::Ruby ::Declarations ::ModuleDecl , decl
1578+ assert_equal RBS ::TypeName . parse ( "Enumerable2" ) , decl . module_name
1579+
1580+ assert_equal 1 , decl . members . size
1581+ assert_equal 1 , decl . self_types . size
1582+
1583+ decl . members [ 0 ] . tap do |member |
1584+ assert_instance_of RBS ::AST ::Ruby ::Members ::ModuleSelfMember , member
1585+ assert_equal "_Each" , member . name . to_s
1586+ assert_equal 1 , member . args . size
1587+ assert_equal "String" , member . args [ 0 ] . to_s
1588+ end
1589+ end
1590+ end
1591+
1592+ def test_parse__module_self_multiple
1593+ result = parse ( <<~RUBY )
1594+ # @rbs module-self: _Each[String]
1595+ # @rbs module-self: Comparable
1596+ module StringCollection
1597+ end
1598+ RUBY
1599+
1600+ assert_empty result . diagnostics
1601+
1602+ result . declarations [ 0 ] . tap do |decl |
1603+ assert_instance_of RBS ::AST ::Ruby ::Declarations ::ModuleDecl , decl
1604+
1605+ assert_equal 2 , decl . self_types . size
1606+
1607+ decl . self_types [ 0 ] . tap do |member |
1608+ assert_equal "_Each" , member . name . to_s
1609+ assert_equal 1 , member . args . size
1610+ end
1611+
1612+ decl . self_types [ 1 ] . tap do |member |
1613+ assert_equal "Comparable" , member . name . to_s
1614+ assert_equal 0 , member . args . size
1615+ end
1616+ end
1617+ end
1618+
15671619 def test_parse__constant_declaration_basic
15681620 result = parse ( <<~RUBY )
15691621 class Example
0 commit comments