Skip to content

Commit

Permalink
extract infer_definition method
Browse files Browse the repository at this point in the history
  • Loading branch information
carljm committed Jul 16, 2024
1 parent e92d796 commit c7e4ef9
Showing 1 changed file with 12 additions and 18 deletions.
30 changes: 12 additions & 18 deletions crates/red_knot_python_semantic/src/types/infer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use ruff_python_ast as ast;
use ruff_python_ast::{ExprContext, TypeParams};

use crate::semantic_index::ast_ids::{HasScopedAstId, HasScopedUseId, ScopedExpressionId};
use crate::semantic_index::definition::{Definition, DefinitionKind};
use crate::semantic_index::definition::{Definition, DefinitionKind, DefinitionNodeKey};
use crate::semantic_index::expression::Expression;
use crate::semantic_index::symbol::{NodeWithScopeRef, ScopeId};
use crate::semantic_index::SemanticIndex;
Expand Down Expand Up @@ -250,12 +250,16 @@ impl<'db> TypeInferenceBuilder<'db> {
}
}

fn infer_function_definition_statement(&mut self, function: &ast::StmtFunctionDef) {
let definition = self.index.definition(function);
fn infer_definition(&mut self, node: impl Into<DefinitionNodeKey>) {
let definition = self.index.definition(node);
let result = infer_definition_types(self.db, definition);
self.extend(result);
}

fn infer_function_definition_statement(&mut self, function: &ast::StmtFunctionDef) {
self.infer_definition(function);
}

fn infer_function_definition(
&mut self,
function: &ast::StmtFunctionDef,
Expand Down Expand Up @@ -290,9 +294,7 @@ impl<'db> TypeInferenceBuilder<'db> {
}

fn infer_class_definition_statement(&mut self, class: &ast::StmtClassDef) {
let definition = self.index.definition(class);
let result = infer_definition_types(self.db, definition);
self.extend(result);
self.infer_definition(class);
}

fn infer_class_definition(&mut self, class: &ast::StmtClassDef, definition: Definition<'db>) {
Expand Down Expand Up @@ -360,9 +362,7 @@ impl<'db> TypeInferenceBuilder<'db> {
for target in targets {
match target {
ast::Expr::Name(name) => {
let definition = self.index.definition(name);
let result = infer_definition_types(self.db, definition);
self.extend(result);
self.infer_definition(name);
}
_ => todo!("support unpacking assignment"),
}
Expand All @@ -384,9 +384,7 @@ impl<'db> TypeInferenceBuilder<'db> {
}

fn infer_annotated_assignment_statement(&mut self, assignment: &ast::StmtAnnAssign) {
let definition = self.index.definition(assignment);
let result = infer_definition_types(self.db, definition);
self.extend(result);
self.infer_definition(assignment);
}

fn infer_annotated_assignment_definition(
Expand Down Expand Up @@ -433,9 +431,7 @@ impl<'db> TypeInferenceBuilder<'db> {
let ast::StmtImport { range: _, names } = import;

for alias in names {
let definition = self.index.definition(alias);
let result = infer_definition_types(self.db, definition);
self.extend(result);
self.infer_definition(alias);
}
}

Expand All @@ -459,9 +455,7 @@ impl<'db> TypeInferenceBuilder<'db> {
} = import;

for alias in names {
let definition = self.index.definition(alias);
let result = infer_definition_types(self.db, definition);
self.extend(result);
self.infer_definition(alias);
}
}

Expand Down

0 comments on commit c7e4ef9

Please sign in to comment.