Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 18 additions & 18 deletions crates/ty_python_semantic/src/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use crate::semantic_index::definition::Definition;
use crate::semantic_index::place::{ScopeId, ScopedPlaceId};
use crate::semantic_index::{imported_modules, place_table, semantic_index};
use crate::suppression::check_suppressions;
use crate::types::call::{Binding, Bindings, CallArgumentTypes, CallableBinding};
use crate::types::call::{Binding, Bindings, CallArguments, CallableBinding};
pub(crate) use crate::types::class_base::ClassBase;
use crate::types::context::{LintDiagnosticGuard, LintDiagnosticGuardBuilder};
use crate::types::diagnostic::{INVALID_TYPE_FORM, UNSUPPORTED_BOOL_CONVERSION};
Expand Down Expand Up @@ -2683,7 +2683,7 @@ impl<'db> Type<'db> {

if let Place::Type(descr_get, descr_get_boundness) = descr_get {
let return_ty = descr_get
.try_call(db, &CallArgumentTypes::positional([self, instance, owner]))
.try_call(db, &CallArguments::positional([self, instance, owner]))
.map(|bindings| {
if descr_get_boundness == Boundness::Bound {
bindings.return_type(db)
Expand Down Expand Up @@ -3134,7 +3134,7 @@ impl<'db> Type<'db> {
self.try_call_dunder(
db,
"__getattr__",
CallArgumentTypes::positional([Type::string_literal(db, &name)]),
CallArguments::positional([Type::string_literal(db, &name)]),
)
.map(|outcome| Place::bound(outcome.return_type(db)))
// TODO: Handle call errors here.
Expand All @@ -3153,7 +3153,7 @@ impl<'db> Type<'db> {
self.try_call_dunder_with_policy(
db,
"__getattribute__",
&mut CallArgumentTypes::positional([Type::string_literal(db, &name)]),
&mut CallArguments::positional([Type::string_literal(db, &name)]),
MemberLookupPolicy::MRO_NO_OBJECT_FALLBACK,
)
.map(|outcome| Place::bound(outcome.return_type(db)))
Expand Down Expand Up @@ -3275,7 +3275,7 @@ impl<'db> Type<'db> {
// runtime there is a fallback to `__len__`, since `__bool__` takes precedence
// and a subclass could add a `__bool__` method.

match self.try_call_dunder(db, "__bool__", CallArgumentTypes::none()) {
match self.try_call_dunder(db, "__bool__", CallArguments::none()) {
Ok(outcome) => {
let return_type = outcome.return_type(db);
if !return_type.is_assignable_to(db, KnownClass::Bool.to_instance(db)) {
Expand Down Expand Up @@ -3474,7 +3474,7 @@ impl<'db> Type<'db> {
return usize_len.try_into().ok().map(Type::IntLiteral);
}

let return_ty = match self.try_call_dunder(db, "__len__", CallArgumentTypes::none()) {
let return_ty = match self.try_call_dunder(db, "__len__", CallArguments::none()) {
Ok(bindings) => bindings.return_type(db),
Err(CallDunderError::PossiblyUnbound(bindings)) => bindings.return_type(db),

Expand Down Expand Up @@ -4394,7 +4394,7 @@ impl<'db> Type<'db> {
fn try_call(
self,
db: &'db dyn Db,
argument_types: &CallArgumentTypes<'_, 'db>,
argument_types: &CallArguments<'_, 'db>,
) -> Result<Bindings<'db>, CallError<'db>> {
self.bindings(db)
.match_parameters(argument_types)
Expand All @@ -4409,7 +4409,7 @@ impl<'db> Type<'db> {
self,
db: &'db dyn Db,
name: &str,
mut argument_types: CallArgumentTypes<'_, 'db>,
mut argument_types: CallArguments<'_, 'db>,
) -> Result<Bindings<'db>, CallDunderError<'db>> {
self.try_call_dunder_with_policy(
db,
Expand All @@ -4430,7 +4430,7 @@ impl<'db> Type<'db> {
self,
db: &'db dyn Db,
name: &str,
argument_types: &mut CallArgumentTypes<'_, 'db>,
argument_types: &mut CallArguments<'_, 'db>,
policy: MemberLookupPolicy,
) -> Result<Bindings<'db>, CallDunderError<'db>> {
// Implicit calls to dunder methods never access instance members, so we pass
Expand Down Expand Up @@ -4492,19 +4492,19 @@ impl<'db> Type<'db> {
self.try_call_dunder(
db,
"__getitem__",
CallArgumentTypes::positional([KnownClass::Int.to_instance(db)]),
CallArguments::positional([KnownClass::Int.to_instance(db)]),
)
.map(|dunder_getitem_outcome| dunder_getitem_outcome.return_type(db))
};

let try_call_dunder_next_on_iterator = |iterator: Type<'db>| {
iterator
.try_call_dunder(db, "__next__", CallArgumentTypes::none())
.try_call_dunder(db, "__next__", CallArguments::none())
.map(|dunder_next_outcome| dunder_next_outcome.return_type(db))
};

let dunder_iter_result = self
.try_call_dunder(db, "__iter__", CallArgumentTypes::none())
.try_call_dunder(db, "__iter__", CallArguments::none())
.map(|dunder_iter_outcome| dunder_iter_outcome.return_type(db));

match dunder_iter_result {
Expand Down Expand Up @@ -4588,11 +4588,11 @@ impl<'db> Type<'db> {
/// pass
/// ```
fn try_enter(self, db: &'db dyn Db) -> Result<Type<'db>, ContextManagerError<'db>> {
let enter = self.try_call_dunder(db, "__enter__", CallArgumentTypes::none());
let enter = self.try_call_dunder(db, "__enter__", CallArguments::none());
let exit = self.try_call_dunder(
db,
"__exit__",
CallArgumentTypes::positional([Type::none(db), Type::none(db), Type::none(db)]),
CallArguments::positional([Type::none(db), Type::none(db), Type::none(db)]),
);

// TODO: Make use of Protocols when we support it (the manager be assignable to `contextlib.AbstractContextManager`).
Expand Down Expand Up @@ -4627,7 +4627,7 @@ impl<'db> Type<'db> {
fn try_call_constructor(
self,
db: &'db dyn Db,
argument_types: CallArgumentTypes<'_, 'db>,
argument_types: CallArguments<'_, 'db>,
) -> Result<Type<'db>, ConstructorCallError<'db>> {
debug_assert!(matches!(
self,
Expand Down Expand Up @@ -6428,11 +6428,11 @@ impl<'db> ContextManagerError<'db> {
Ok(_) | Err(CallDunderError::CallError(..)),
Ok(_) | Err(CallDunderError::CallError(..)),
) = (
context_expression_type.try_call_dunder(db, "__aenter__", CallArgumentTypes::none()),
context_expression_type.try_call_dunder(db, "__aenter__", CallArguments::none()),
context_expression_type.try_call_dunder(
db,
"__aexit__",
CallArgumentTypes::positional([Type::unknown(), Type::unknown(), Type::unknown()]),
CallArguments::positional([Type::unknown(), Type::unknown(), Type::unknown()]),
),
) {
diag.info(format_args!(
Expand Down Expand Up @@ -6495,7 +6495,7 @@ impl<'db> IterationError<'db> {

Self::IterCallError(_, dunder_iter_bindings) => dunder_iter_bindings
.return_type(db)
.try_call_dunder(db, "__next__", CallArgumentTypes::none())
.try_call_dunder(db, "__next__", CallArguments::none())
.map(|dunder_next_outcome| Some(dunder_next_outcome.return_type(db)))
.unwrap_or_else(|dunder_next_call_error| dunder_next_call_error.return_type(db)),

Expand Down
2 changes: 1 addition & 1 deletion crates/ty_python_semantic/src/types/call.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use crate::Db;

mod arguments;
pub(crate) mod bind;
pub(super) use arguments::{Argument, CallArgumentTypes, CallArguments};
pub(super) use arguments::{Argument, CallArguments};
pub(super) use bind::{Binding, Bindings, CallableBinding};

/// Wraps a [`Bindings`] for an unsuccessful call with information about why the call was
Expand Down
Loading
Loading