Parse an alias region decl alias-region-decl ::= * AliasRegion(region) "=" Integer String
(&mut self)
| 1941 | // |
| 1942 | // alias-region-decl ::= * AliasRegion(region) "=" Integer String |
| 1943 | fn parse_alias_region_decl(&mut self) -> ParseResult<(ir::AliasRegion, ir::AliasRegionData)> { |
| 1944 | let ar_num = match self.token() { |
| 1945 | Some(Token::AliasRegion(n)) => n, |
| 1946 | _ => return err!(self.loc, "expected alias region number"), |
| 1947 | }; |
| 1948 | self.consume(); |
| 1949 | let ar = ir::AliasRegion::new(usize::try_from(ar_num).unwrap()); |
| 1950 | |
| 1951 | self.match_token(Token::Equal, "expected '=' in alias region decl")?; |
| 1952 | |
| 1953 | let user_id = match self.token() { |
| 1954 | Some(Token::Integer(s)) => u32::from_str_radix(s, 10) |
| 1955 | .map_err(|_| self.error("expected integer user_id for alias region"))?, |
| 1956 | _ => return err!(self.loc, "expected integer user_id for alias region"), |
| 1957 | }; |
| 1958 | self.consume(); |
| 1959 | |
| 1960 | let description = match self.token() { |
| 1961 | Some(Token::String(s)) => s.to_owned(), |
| 1962 | _ => return err!(self.loc, "expected string description for alias region"), |
| 1963 | }; |
| 1964 | self.consume(); |
| 1965 | |
| 1966 | let data = ir::AliasRegionData { |
| 1967 | user_id, |
| 1968 | description: std::borrow::Cow::Owned(description), |
| 1969 | }; |
| 1970 | |
| 1971 | // Collect any trailing comments. |
| 1972 | self.token(); |
| 1973 | self.claim_gathered_comments(ir::AliasRegion::new(usize::try_from(ar_num).unwrap())); |
| 1974 | |
| 1975 | Ok((ar, data)) |
| 1976 | } |
| 1977 | |
| 1978 | // Parse a stack limit decl |
| 1979 | // |
no test coverage detected