Skip to content

Commit 527dfed

Browse files
committed
Support Pointee trait
1 parent 689f964 commit 527dfed

File tree

7 files changed

+70
-28
lines changed

7 files changed

+70
-28
lines changed

Cargo.lock

+29-18
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/hir-ty/Cargo.toml

+4-4
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ either = "1.7.0"
2222
tracing = "0.1.35"
2323
rustc-hash = "1.1.0"
2424
scoped-tls = "1.0.0"
25-
chalk-solve = { version = "0.89.0", default-features = false }
26-
chalk-ir = "0.89.0"
27-
chalk-recursive = { version = "0.89.0", default-features = false }
28-
chalk-derive = "0.89.0"
25+
chalk-solve = { version = "0.91.0", default-features = false }
26+
chalk-ir = "0.91.0"
27+
chalk-recursive = { version = "0.91.0", default-features = false }
28+
chalk-derive = "0.91.0"
2929
la-arena = { version = "0.3.0", path = "../../lib/la-arena" }
3030
once_cell = "1.17.0"
3131
triomphe.workspace = true

crates/hir-ty/src/chalk_db.rs

+2
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,7 @@ fn well_known_trait_from_lang_item(item: LangItem) -> Option<WellKnownTrait> {
592592
LangItem::Unpin => WellKnownTrait::Unpin,
593593
LangItem::Unsize => WellKnownTrait::Unsize,
594594
LangItem::Tuple => WellKnownTrait::Tuple,
595+
LangItem::PointeeTrait => WellKnownTrait::Pointee,
595596
_ => return None,
596597
})
597598
}
@@ -612,6 +613,7 @@ fn lang_item_from_well_known_trait(trait_: WellKnownTrait) -> LangItem {
612613
WellKnownTrait::Tuple => LangItem::Tuple,
613614
WellKnownTrait::Unpin => LangItem::Unpin,
614615
WellKnownTrait::Unsize => LangItem::Unsize,
616+
WellKnownTrait::Pointee => LangItem::PointeeTrait,
615617
}
616618
}
617619

crates/hir-ty/src/tests/simple.rs

+16
Original file line numberDiff line numberDiff line change
@@ -3497,6 +3497,22 @@ fn func() {
34973497
);
34983498
}
34993499

3500+
#[test]
3501+
fn pointee_trait() {
3502+
check_types(
3503+
r#"
3504+
//- minicore: pointee
3505+
use core::ptr::Pointee;
3506+
fn func() {
3507+
let x: <u8 as Pointee>::Metadata;
3508+
//^ ()
3509+
let x: <[u8] as Pointee>::Metadata;
3510+
//^ usize
3511+
}
3512+
"#,
3513+
);
3514+
}
3515+
35003516
// FIXME
35013517
#[test]
35023518
fn castable_to() {

crates/ide/src/inlay_hints/chaining.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ fn main() {
474474
file_id: FileId(
475475
1,
476476
),
477-
range: 9286..9294,
477+
range: 9287..9295,
478478
},
479479
),
480480
tooltip: "",
@@ -487,7 +487,7 @@ fn main() {
487487
file_id: FileId(
488488
1,
489489
),
490-
range: 9318..9322,
490+
range: 9319..9323,
491491
},
492492
),
493493
tooltip: "",
@@ -511,7 +511,7 @@ fn main() {
511511
file_id: FileId(
512512
1,
513513
),
514-
range: 9286..9294,
514+
range: 9287..9295,
515515
},
516516
),
517517
tooltip: "",
@@ -524,7 +524,7 @@ fn main() {
524524
file_id: FileId(
525525
1,
526526
),
527-
range: 9318..9322,
527+
range: 9319..9323,
528528
},
529529
),
530530
tooltip: "",
@@ -548,7 +548,7 @@ fn main() {
548548
file_id: FileId(
549549
1,
550550
),
551-
range: 9286..9294,
551+
range: 9287..9295,
552552
},
553553
),
554554
tooltip: "",
@@ -561,7 +561,7 @@ fn main() {
561561
file_id: FileId(
562562
1,
563563
),
564-
range: 9318..9322,
564+
range: 9319..9323,
565565
},
566566
),
567567
tooltip: "",

crates/test-utils/src/fixture.rs

+4
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,10 @@ impl MiniCore {
387387
}
388388
}
389389

390+
if !active_regions.is_empty() {
391+
panic!("unclosed regions: {:?} Add an `endregion` comment", active_regions);
392+
}
393+
390394
for flag in &self.valid_flags {
391395
if !seen_regions.iter().any(|it| it == flag) {
392396
panic!("unused minicore flag: {flag:?}");

crates/test-utils/src/minicore.rs

+9
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
//! panic: fmt
4343
//! phantom_data:
4444
//! pin:
45+
//! pointee:
4546
//! range:
4647
//! result:
4748
//! send: sized
@@ -368,6 +369,14 @@ pub mod ptr {
368369
*dst = src;
369370
}
370371
// endregion:drop
372+
373+
// region:pointee
374+
#[lang = "pointee_trait"]
375+
pub trait Pointee {
376+
#[lang = "metadata_type"]
377+
type Metadata;
378+
}
379+
// endregion:pointee
371380
}
372381

373382
pub mod ops {

0 commit comments

Comments
 (0)