MCPcopy Create free account
hub / github.com/Rust-for-Linux/klint / parse_i32

Method parse_i32

src/attribute.rs:205–249  ·  view source on GitHub ↗
(&self, mut cursor: Cursor<'a>)

Source from the content-addressed store, hash-verified

203 }
204
205 fn parse_i32<'a>(&self, mut cursor: Cursor<'a>) -> Result<(i32, Cursor<'a>), ErrorGuaranteed> {
206 let expect_int = |span| {
207 Err(self.tcx.dcx().emit_err(InvalidPreemptCountAttribute {
208 span,
209 help: "an integer expected",
210 }))
211 };
212
213 let negative = if matches!(
214 cursor.peek(),
215 TokenTree::Token(
216 token::Token {
217 kind: token::TokenKind::Minus,
218 ..
219 },
220 _
221 )
222 ) {
223 cursor.next();
224 true
225 } else {
226 false
227 };
228
229 let token = cursor.next();
230 let TokenTree::Token(
231 token::Token {
232 kind: token::TokenKind::Literal(lit),
233 ..
234 },
235 _,
236 ) = token
237 else {
238 expect_int(token.span())?
239 };
240 if lit.kind != token::LitKind::Integer || lit.suffix.is_some() {
241 expect_int(token.span())?;
242 }
243 let Some(v) = lit.symbol.as_str().parse::<i32>().ok() else {
244 expect_int(token.span())?;
245 };
246 let v = if negative { -v } else { v };
247
248 Ok((v, cursor))
249 }
250
251 fn parse_expectation_range<'a>(
252 &self,

Callers 1

parse_preempt_countMethod · 0.80

Calls 2

nextMethod · 0.80
spanMethod · 0.80

Tested by

no test coverage detected