mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-07 13:15:06 +00:00
fixup
This commit is contained in:
parent
1bee527cb2
commit
5cc6762c23
3 changed files with 66 additions and 45 deletions
|
@ -1195,8 +1195,9 @@ f(**kwargs<CURSOR>)
|
|||
fn goto_def_class() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB(val: int):
|
||||
self.myval = val
|
||||
class AB:
|
||||
def __init__(self, val: int):
|
||||
self.myval = val
|
||||
|
||||
x = A<CURSOR>B(5)
|
||||
"#,
|
||||
|
@ -1206,27 +1207,46 @@ f(**kwargs<CURSOR>)
|
|||
info[goto-type-definition]: Type definition
|
||||
--> main.py:2:19
|
||||
|
|
||||
2 | class AB(val: int):
|
||||
2 | class AB:
|
||||
| ^^
|
||||
3 | self.myval = val
|
||||
3 | def __init__(self, val: int):
|
||||
4 | self.myval = val
|
||||
|
|
||||
info: Source
|
||||
--> main.py:5:17
|
||||
--> main.py:6:17
|
||||
|
|
||||
3 | self.myval = val
|
||||
4 |
|
||||
5 | x = AB(5)
|
||||
4 | self.myval = val
|
||||
5 |
|
||||
6 | x = AB(5)
|
||||
| ^^
|
||||
|
|
||||
");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_class_instance_variable() {
|
||||
fn goto_def_class_implicit_instance_variable() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB(val: int):
|
||||
self.myval = val
|
||||
class AB:
|
||||
def __init__(self, val: int):
|
||||
self.myval = val
|
||||
|
||||
x = AB(5)
|
||||
print(x.my<CURSOR>val)
|
||||
"#,
|
||||
);
|
||||
|
||||
assert_snapshot!(test.goto_definition(), @"No goto target found");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn goto_def_class_explicit_instance_variable() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB:
|
||||
myval: int
|
||||
def __init__(self, val: int):
|
||||
self.myval = val
|
||||
|
||||
x = AB(5)
|
||||
print(x.my<CURSOR>val)
|
||||
|
@ -1240,8 +1260,9 @@ f(**kwargs<CURSOR>)
|
|||
fn goto_def_path_parent() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB(val: int):
|
||||
self.myval = val
|
||||
class AB:
|
||||
def __init__(self, val: int):
|
||||
self.myval = val
|
||||
|
||||
xyz = AB(5)
|
||||
print(x<CURSOR>yz.myval)
|
||||
|
@ -1250,19 +1271,19 @@ f(**kwargs<CURSOR>)
|
|||
|
||||
assert_snapshot!(test.goto_definition(), @r"
|
||||
info[goto-type-definition]: Type definition
|
||||
--> main.py:5:13
|
||||
--> main.py:6:13
|
||||
|
|
||||
3 | self.myval = val
|
||||
4 |
|
||||
5 | xyz = AB(5)
|
||||
4 | self.myval = val
|
||||
5 |
|
||||
6 | xyz = AB(5)
|
||||
| ^^^
|
||||
6 | print(xyz.myval)
|
||||
7 | print(xyz.myval)
|
||||
|
|
||||
info: Source
|
||||
--> main.py:6:19
|
||||
--> main.py:7:19
|
||||
|
|
||||
5 | xyz = AB(5)
|
||||
6 | print(xyz.myval)
|
||||
6 | xyz = AB(5)
|
||||
7 | print(xyz.myval)
|
||||
| ^^^
|
||||
|
|
||||
");
|
||||
|
@ -1272,7 +1293,7 @@ f(**kwargs<CURSOR>)
|
|||
fn goto_def_class_class_variable() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB():
|
||||
class AB:
|
||||
RED = "red"
|
||||
BLUE = "blue"
|
||||
|
||||
|
@ -1287,7 +1308,7 @@ f(**kwargs<CURSOR>)
|
|||
fn goto_def_class_path_parent() {
|
||||
let test = cursor_test(
|
||||
r#"
|
||||
class AB():
|
||||
class AB:
|
||||
RED = "red"
|
||||
BLUE = "blue"
|
||||
|
||||
|
@ -1299,7 +1320,7 @@ f(**kwargs<CURSOR>)
|
|||
info[goto-type-definition]: Type definition
|
||||
--> main.py:2:19
|
||||
|
|
||||
2 | class AB():
|
||||
2 | class AB:
|
||||
| ^^
|
||||
3 | RED = "red"
|
||||
4 | BLUE = "blue"
|
||||
|
|
|
@ -187,27 +187,27 @@ pub trait HasDefinition {
|
|||
|
||||
impl HasDefinition for ast::ExprRef<'_> {
|
||||
fn definitions<'db>(&self, model: &SemanticModel<'db>) -> Option<Vec<Definition<'db>>> {
|
||||
let ExprRef::Name(name) = self else {
|
||||
return None;
|
||||
};
|
||||
match name.ctx {
|
||||
ExprContext::Load => {
|
||||
let index = semantic_index(model.db, model.file);
|
||||
let file_scope = index.expression_scope_id(*self);
|
||||
let scope = file_scope.to_scope_id(model.db, model.file);
|
||||
let use_def = index.use_def_map(file_scope);
|
||||
let use_id = self.scoped_use_id(model.db, scope);
|
||||
match self {
|
||||
ExprRef::Name(name) => match name.ctx {
|
||||
ExprContext::Load => {
|
||||
let index = semantic_index(model.db, model.file);
|
||||
let file_scope = index.expression_scope_id(*self);
|
||||
let scope = file_scope.to_scope_id(model.db, model.file);
|
||||
let use_def = index.use_def_map(file_scope);
|
||||
let use_id = self.scoped_use_id(model.db, scope);
|
||||
|
||||
Some(
|
||||
use_def
|
||||
.bindings_at_use(use_id)
|
||||
.filter_map(|binding| binding.binding.definition())
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
ExprContext::Store => None,
|
||||
ExprContext::Del => None,
|
||||
ExprContext::Invalid => None,
|
||||
Some(
|
||||
use_def
|
||||
.bindings_at_use(use_id)
|
||||
.filter_map(|binding| binding.binding.definition())
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
ExprContext::Store => None,
|
||||
ExprContext::Del => None,
|
||||
ExprContext::Invalid => None,
|
||||
},
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2667,7 +2667,7 @@ impl<'db> BindingError<'db> {
|
|||
if let Some(builder) = context.report_lint(&MISSING_ARGUMENT, node) {
|
||||
let s = if parameters.0.len() == 1 { "" } else { "s" };
|
||||
let mut diag = builder.into_diagnostic(format_args!(
|
||||
"No argument{s} provided for required parameterzz{s} {parameters}{}",
|
||||
"No argument{s} provided for required parameter{s} {parameters}{}",
|
||||
if let Some(CallableDescription { kind, name }) = callable_description {
|
||||
format!(" of {kind} `{name}`")
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue