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:421–588  ·  view source on GitHub ↗

Parses a literal pattern. See:

(&mut self)

Source from the content-addressed store, hash-verified

419 ///
420 /// See: <https://docs.python.org/3/reference/compound_stmts.html#grammar-token-python-grammar-literal_pattern>
421 fn parse_match_pattern_literal(&mut self) -> Pattern {
422 let start = self.node_start();
423 match self.current_token_kind() {
424 TokenKind::None => {
425 self.bump(TokenKind::None);
426 Pattern::MatchSingleton(ast::PatternMatchSingleton {
427 value: Singleton::None,
428 range: self.node_range(start),
429 node_index: AtomicNodeIndex::NONE,
430 })
431 }
432 TokenKind::True => {
433 self.bump(TokenKind::True);
434 Pattern::MatchSingleton(ast::PatternMatchSingleton {
435 value: Singleton::True,
436 range: self.node_range(start),
437 node_index: AtomicNodeIndex::NONE,
438 })
439 }
440 TokenKind::False => {
441 self.bump(TokenKind::False);
442 Pattern::MatchSingleton(ast::PatternMatchSingleton {
443 value: Singleton::False,
444 range: self.node_range(start),
445 node_index: AtomicNodeIndex::NONE,
446 })
447 }
448 TokenKind::String | TokenKind::FStringStart | TokenKind::TStringStart => {
449 let str = self.parse_strings();
450
451 Pattern::MatchValue(ast::PatternMatchValue {
452 value: Box::new(str),
453 range: self.node_range(start),
454 node_index: AtomicNodeIndex::NONE,
455 })
456 }
457 TokenKind::Complex => {
458 let (real, imag) = self.bump_complex();
459 let range = self.node_range(start);
460
461 Pattern::MatchValue(ast::PatternMatchValue {
462 value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
463 value: Number::Complex { real, imag },
464 range,
465 node_index: AtomicNodeIndex::NONE,
466 })),
467 range,
468 node_index: AtomicNodeIndex::NONE,
469 })
470 }
471 TokenKind::Int => {
472 let value = self.bump_int();
473 let range = self.node_range(start);
474
475 Pattern::MatchValue(ast::PatternMatchValue {
476 value: Box::new(Expr::NumberLiteral(ast::ExprNumberLiteral {
477 value: Number::Int(value),
478 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
at_name_or_keywordMethod · 0.80

Tested by

no test coverage detected