Skip to content

Commit

Permalink
fix: Allow flyimport to import primitive shadowing modules
Browse files Browse the repository at this point in the history
  • Loading branch information
Veykril committed Jul 21, 2024
1 parent aa52c5d commit a580bab
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1618,3 +1618,18 @@ pub struct FooStruct;
"#]],
);
}

#[test]
fn primitive_mod() {
check(
r#"
//- minicore: str
fn main() {
str::from$0
}
"#,
expect![[r#"
fn from_utf8_unchecked(…) (use core::str) const unsafe fn(&[u8]) -> &str
"#]],
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ fn path_import_candidate(
) -> Option<ImportCandidate> {
Some(match qualifier {
Some(qualifier) => match sema.resolve_path(&qualifier) {
None => {
Some(PathResolution::Def(ModuleDef::BuiltinType(_))) | None => {
if qualifier.first_qualifier().map_or(true, |it| sema.resolve_path(&it).is_none()) {
let qualifier = qualifier
.segments()
Expand Down
4 changes: 3 additions & 1 deletion src/tools/rust-analyzer/crates/ide/src/file_structure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,9 @@ fn structure_token(token: SyntaxToken) -> Option<StructureNode> {
if let Some(comment) = ast::Comment::cast(token) {
let text = comment.text().trim();

if let Some(region_name) = text.strip_prefix("// region:").map(str::trim) {
if let Some(region_name) =
text.strip_prefix("// region:").map(str::trim).filter(|it| !it.is_empty())
{
return Some(StructureNode {
parent: None,
label: region_name.to_owned(),
Expand Down
9 changes: 9 additions & 0 deletions src/tools/rust-analyzer/crates/test-utils/src/minicore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
//! size_of: sized
//! sized:
//! slice:
//! str:
//! sync: sized
//! transmute:
//! try: infallible
Expand Down Expand Up @@ -1368,6 +1369,14 @@ pub mod iter {
}
// endregion:iterator

// region:str
pub mod str {
pub const unsafe fn from_utf8_unchecked(v: &[u8]) -> &str {
""
}
}
// endregion:str

// region:panic
mod panic {
pub macro panic_2021 {
Expand Down

0 comments on commit a580bab

Please sign in to comment.