| 157 | } |
| 158 | |
| 159 | pub(crate) fn parse_parameters( |
| 160 | parameters: &Node, |
| 161 | children: &mut Vec<Symbol>, |
| 162 | ctx: &mut ParserContext, |
| 163 | ) -> Result<()> { |
| 164 | assert_eq!(parameters.kind(), "formal_parameters"); |
| 165 | |
| 166 | let mut cursor = parameters.walk(); |
| 167 | cursor.goto_first_child(); |
| 168 | |
| 169 | loop { |
| 170 | if cursor.node().kind() == "required_parameter" |
| 171 | || cursor.node().kind() == "optional_parameter" |
| 172 | { |
| 173 | let mut parameter = parameter::parse(&cursor.node(), ctx)?; |
| 174 | parameter.context = Some(SymbolContext::Parameter); |
| 175 | children.push(parameter); |
| 176 | } |
| 177 | |
| 178 | if !cursor.goto_next_sibling() { |
| 179 | break; |
| 180 | } |
| 181 | } |
| 182 | |
| 183 | Ok(()) |
| 184 | } |
| 185 | |
| 186 | pub(crate) fn parse_type_parameters( |
| 187 | type_parameters: &Node, |