Skip to content

Commit fe15131

Browse files
committed
infer lambda parameter types with Callable type context
1 parent 4f449ae commit fe15131

13 files changed

Lines changed: 1040 additions & 133 deletions

File tree

crates/ty_ide/src/semantic_tokens.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ use ruff_python_ast::{
4343
};
4444
use ruff_text_size::{Ranged, TextLen, TextRange, TextSize};
4545
use std::ops::Deref;
46-
use ty_python_core::definition::{Definition, DefinitionKind};
46+
use ty_python_core::definition::{Definition, DefinitionKind, ParameterDefinitionNodeKind};
4747
use ty_python_semantic::{
4848
HasType, SemanticModel,
4949
types::ide_support::{
@@ -314,7 +314,7 @@ impl<'db> SemanticTokenVisitor<'db> {
314314
}
315315
DefinitionKind::Class(_) => Some((SemanticTokenType::Class, modifiers)),
316316
DefinitionKind::TypeVar(_) => Some((SemanticTokenType::TypeParameter, modifiers)),
317-
DefinitionKind::Parameter(parameter) => {
317+
DefinitionKind::Parameter(ParameterDefinitionNodeKind::Parameter(parameter)) => {
318318
let parsed = parsed_module(db, definition.file(db));
319319
let ty = parameter.node(&parsed.load(db)).inferred_type(&model);
320320

@@ -342,12 +342,7 @@ impl<'db> SemanticTokenVisitor<'db> {
342342

343343
Some((SemanticTokenType::Parameter, modifiers))
344344
}
345-
DefinitionKind::VariadicPositionalParameter(_) => {
346-
Some((SemanticTokenType::Parameter, modifiers))
347-
}
348-
DefinitionKind::VariadicKeywordParameter(_) => {
349-
Some((SemanticTokenType::Parameter, modifiers))
350-
}
345+
DefinitionKind::Parameter(_) => Some((SemanticTokenType::Parameter, modifiers)),
351346
DefinitionKind::TypeAlias(_) => Some((SemanticTokenType::TypeParameter, modifiers)),
352347
DefinitionKind::Import(_)
353348
| DefinitionKind::ImportFrom(_)

crates/ty_python_core/src/ast_ids.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ pub(crate) mod node_key {
150150
}
151151
}
152152

153+
impl From<&ast::ExprLambda> for ExpressionNodeKey {
154+
fn from(value: &ast::ExprLambda) -> Self {
155+
Self(NodeKey::from_node(value))
156+
}
157+
}
158+
153159
impl From<&ast::Identifier> for ExpressionNodeKey {
154160
fn from(value: &ast::Identifier) -> Self {
155161
Self(NodeKey::from_node(value))

0 commit comments

Comments
 (0)