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

Parses a literal pattern. See:

(&mut self)

Source from the content-addressed store, hash-verified

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