Skip to content

Commit fcc18af

Browse files
committed
Add parse_type_params RBS signature
Signed-off-by: Alexandre Terrasa <[email protected]>
1 parent 135f66e commit fcc18af

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

sig/parser.rbs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,24 @@ module RBS
6868
#
6969
def self.parse_signature: (Buffer | String) -> [Buffer, Array[AST::Directives::t], Array[AST::Declarations::t]]
7070

71+
# Parse a list of type parameters and return it
72+
#
73+
# ```ruby
74+
# RBS::Parser.parse_type_params("") # => nil
75+
# RBS::Parser.parse_type_params("[U, V]") # => `[:U, :V]`
76+
# RBS::Parser.parse_type_params("[in U, V < Integer]") # => `[:U, :V]`
77+
# ```
78+
#
79+
# When `module_type_params` is `false`, an error is raised if `unchecked`, `in` or `out` are used.
80+
#
81+
# ```ruby
82+
# RBS::Parser.parse_type_params("[unchecked U]", module_type_params: false) # => Raises an error
83+
# RBS::Parser.parse_type_params("[out U]", module_type_params: false) # => Raises an error
84+
# RBS::Parser.parse_type_params("[in U]", module_type_params: false) # => Raises an error
85+
# ```
86+
#
87+
def self.parse_type_params: (Buffer | String, ?module_type_params: bool) -> Array[AST::TypeParam]
88+
7189
# Returns the magic comment from the buffer
7290
#
7391
def self.magic_comment: (Buffer) -> AST::Directives::ResolveTypeNames?
@@ -104,6 +122,8 @@ module RBS
104122

105123
def self._parse_signature: (Buffer, Integer start_pos, Integer end_pos) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
106124

125+
def self._parse_type_params: (Buffer, Integer start_pos, Integer end_pos, bool module_type_params) -> Array[AST::TypeParam]
126+
107127
def self._lex: (Buffer, Integer end_pos) -> Array[[Symbol, Location[untyped, untyped]]]
108128

109129
def self._parse_inline_leading_annotation: (Buffer, Integer start_pos, Integer end_pos, Array[Symbol] variables) -> AST::Ruby::Annotations::leading_annotation

0 commit comments

Comments
 (0)