MCPcopy Create free account
hub / github.com/astral-sh/ruff / parse_match_pattern_literal

Method parse_match_pattern_literal

crates/ruff_python_parser/src/parser/pattern.rs:404–600  ·  view source on GitHub ↗

Parses a literal pattern. See:

(&mut self)

Source from the content-addressed store, hash-verified

402 ///
403 /// See: <https://docs.python.org/3/reference/compound_stmts.html#grammar-token-python-grammar-literal_pattern>
404 fn parse_match_pattern_literal(&mut self) -> Pattern {
405 let start = self.node_start();
406 match self.current_token_kind() {
407 TokenKind::None => {
408 self.bump(TokenKind::None);
409 Pattern::MatchSingleton(ast::PatternMatchSingleton {
410 value: Singleton::None,
411 range: self.node_range(start),
412 node_index: AtomicNodeIndex::NONE,
413 })
414 }
415 TokenKind::True => {
416 self.bump(TokenKind::True);
417 Pattern::MatchSingleton(ast::PatternMatchSingleton {
418 value: Singleton::True,
419 range: self.node_range(start),
420 node_index: AtomicNodeIndex::NONE,
421 })
422 }
423 TokenKind::False => {
424 self.bump(TokenKind::False);
425 Pattern::MatchSingleton(ast::PatternMatchSingleton {
426 value: Singleton::False,
427 range: self.node_range(start),
428 node_index: AtomicNodeIndex::NONE,
429 })
430 }
431 TokenKind::String | TokenKind::FStringStart | TokenKind::TStringStart => {
432 let str = self.parse_strings();
433
434 Pattern::MatchValue(ast::PatternMatchValue {
435 value: Box::new(str),
436 range: self.node_range(start),
437 node_index: AtomicNodeIndex::NONE,
438 })
439 }
440 TokenKind::Complex => {
441 let (real, imag) = self.bump_complex();
442 let range = self.node_range(start);
443
444 Pattern::MatchValue(ast::PatternMatchValue {
445 value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
446 value: Number::Complex { real, imag },
447 range,
448 node_index: AtomicNodeIndex::NONE,
449 })),
450 range,
451 node_index: AtomicNodeIndex::NONE,
452 })
453 }
454 TokenKind::Int => {
455 let value = self.bump_int();
456 let range = self.node_range(start);
457
458 Pattern::MatchValue(ast::PatternMatchValue {
459 value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
460 value: Number::Int(value),
461 range,

Callers 1

Calls 15

UnaryOpEnum · 0.85
NameClass · 0.85
node_startMethod · 0.80
current_token_kindMethod · 0.80
node_rangeMethod · 0.80
parse_stringsMethod · 0.80
bump_complexMethod · 0.80
bump_intMethod · 0.80
bump_floatMethod · 0.80

Tested by

no test coverage detected