mirror of https://github.com/astral-sh/ruff
[ty] Implement goto-type for inlay type hints (#21533)
This PR generalizes the signature_help system's SignatureWriter which could get the subspans of function parameters. We now have TypeDetailsWriter which is threaded between type's display implementations via a new `fmt_detailed` method that many of the Display types now have. With this information we can properly add goto-type targets to our inlay hints. This also lays groundwork for any future "I want to render a type but get spans" work. Also a ton of lifetimes are introduced to avoid things getting conflated with `'db`. This PR is broken up into a series of commits: * Generalizing `SignatureWriter` to `TypeDetailsWriter`, but not using it anywhere else. This commit was confirmed to be a non-functional change (no test results changed) * Introducing `fmt_detailed` everywhere to thread through `TypeDetailsWriter` and annotate various spans as "being" a given Type -- this is also where I had to reckon with a ton of erroneous `&'db self`. This commit was also confirmed to be a non-functional change. * Finally, actually using the results for goto-type on inlay hints! * Regenerating snapshots, fixups, etc.
This commit is contained in:
parent
02c102da88
commit
416e2267da
File diff suppressed because it is too large
Load Diff
|
|
@ -50,8 +50,8 @@ use crate::types::constraints::{
|
||||||
};
|
};
|
||||||
use crate::types::context::{LintDiagnosticGuard, LintDiagnosticGuardBuilder};
|
use crate::types::context::{LintDiagnosticGuard, LintDiagnosticGuardBuilder};
|
||||||
use crate::types::diagnostic::{INVALID_AWAIT, INVALID_TYPE_FORM, UNSUPPORTED_BOOL_CONVERSION};
|
use crate::types::diagnostic::{INVALID_AWAIT, INVALID_TYPE_FORM, UNSUPPORTED_BOOL_CONVERSION};
|
||||||
pub use crate::types::display::DisplaySettings;
|
|
||||||
use crate::types::display::TupleSpecialization;
|
use crate::types::display::TupleSpecialization;
|
||||||
|
pub use crate::types::display::{DisplaySettings, TypeDetail, TypeDisplayDetails};
|
||||||
use crate::types::enums::{enum_metadata, is_single_member_enum};
|
use crate::types::enums::{enum_metadata, is_single_member_enum};
|
||||||
use crate::types::function::{
|
use crate::types::function::{
|
||||||
DataclassTransformerFlags, DataclassTransformerParams, FunctionDecorators, FunctionSpans,
|
DataclassTransformerFlags, DataclassTransformerParams, FunctionDecorators, FunctionSpans,
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -47,7 +47,20 @@ y = foo(1)
|
||||||
"value": ": "
|
"value": ": "
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value": "int"
|
"value": "int",
|
||||||
|
"location": {
|
||||||
|
"uri": "file://<typeshed>/stdlib/builtins.pyi",
|
||||||
|
"range": {
|
||||||
|
"start": {
|
||||||
|
"line": 347,
|
||||||
|
"character": 6
|
||||||
|
},
|
||||||
|
"end": {
|
||||||
|
"line": 347,
|
||||||
|
"character": 9
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"kind": 1
|
"kind": 1
|
||||||
|
|
|
||||||
|
|
@ -1198,6 +1198,7 @@ impl TestContext {
|
||||||
r#"The system cannot find the file specified."#,
|
r#"The system cannot find the file specified."#,
|
||||||
"No such file or directory",
|
"No such file or directory",
|
||||||
);
|
);
|
||||||
|
settings.add_filter(r"file://.*/stdlib/", "file://<typeshed>/stdlib/");
|
||||||
|
|
||||||
let settings_scope = settings.bind_to_scope();
|
let settings_scope = settings.bind_to_scope();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue