(&mut self)
| 255 | } |
| 256 | |
| 257 | fn parse_attr(&mut self) -> Result<ArrayAttrAst> { |
| 258 | let name = self.expect_ident()?; |
| 259 | let type_name = self.expect_ident()?; |
| 260 | let dtype = parse_attr_type(&type_name) |
| 261 | .ok_or_else(|| self.err(format!("unknown attr type `{type_name}`")))?; |
| 262 | let nullable = if self.match_kw("NOT") { |
| 263 | self.expect_kw("NULL")?; |
| 264 | false |
| 265 | } else { |
| 266 | // Default: nullable. |
| 267 | true |
| 268 | }; |
| 269 | Ok(ArrayAttrAst { |
| 270 | name, |
| 271 | dtype, |
| 272 | nullable, |
| 273 | }) |
| 274 | } |
| 275 | |
| 276 | fn parse_cell_order(&mut self) -> Result<ArrayCellOrderAst> { |
| 277 | let id = self.expect_ident()?; |
no test coverage detected