MCPcopy Index your code
hub / github.com/RustPython/RustPython / scan_pattern

Method scan_pattern

crates/codegen/src/symboltable.rs:2395–2440  ·  view source on GitHub ↗
(&mut self, pattern: &ast::Pattern)

Source from the content-addressed store, hash-verified

2393 }
2394
2395 fn scan_pattern(&mut self, pattern: &ast::Pattern) -> SymbolTableResult {
2396 use ast::Pattern::*;
2397 match pattern {
2398 MatchValue(ast::PatternMatchValue { value, .. }) => {
2399 self.scan_expression(value, ExpressionContext::Load)?
2400 }
2401 MatchSingleton(_) => {}
2402 MatchSequence(ast::PatternMatchSequence { patterns, .. }) => {
2403 self.scan_patterns(patterns)?
2404 }
2405 MatchMapping(ast::PatternMatchMapping {
2406 keys,
2407 patterns,
2408 rest,
2409 ..
2410 }) => {
2411 self.scan_expressions(keys, ExpressionContext::Load)?;
2412 self.scan_patterns(patterns)?;
2413 if let Some(rest) = rest {
2414 self.register_ident(rest, SymbolUsage::Assigned)?;
2415 }
2416 }
2417 MatchClass(ast::PatternMatchClass { cls, arguments, .. }) => {
2418 self.scan_expression(cls, ExpressionContext::Load)?;
2419 self.scan_patterns(&arguments.patterns)?;
2420 for kw in &arguments.keywords {
2421 self.scan_pattern(&kw.pattern)?;
2422 }
2423 }
2424 MatchStar(ast::PatternMatchStar { name, .. }) => {
2425 if let Some(name) = name {
2426 self.register_ident(name, SymbolUsage::Assigned)?;
2427 }
2428 }
2429 MatchAs(ast::PatternMatchAs { pattern, name, .. }) => {
2430 if let Some(pattern) = pattern {
2431 self.scan_pattern(pattern)?;
2432 }
2433 if let Some(name) = name {
2434 self.register_ident(name, SymbolUsage::Assigned)?;
2435 }
2436 }
2437 MatchOr(ast::PatternMatchOr { patterns, .. }) => self.scan_patterns(patterns)?,
2438 }
2439 Ok(())
2440 }
2441
2442 /// Scan default parameter values (evaluated in the enclosing scope)
2443 fn scan_parameter_defaults(&mut self, parameters: &ast::Parameters) -> SymbolTableResult {

Callers 2

scan_statementMethod · 0.80
scan_patternsMethod · 0.80

Calls 4

scan_expressionMethod · 0.80
scan_patternsMethod · 0.80
scan_expressionsMethod · 0.80
register_identMethod · 0.80

Tested by

no test coverage detected