Skip to content

Commit f34892e

Browse files
committed
Support Pointee trait
1 parent 8f06f99 commit f34892e

File tree

7 files changed

+72
-28
lines changed

7 files changed

+72
-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
typed-arena = "2.0.1"

crates/hir-ty/src/chalk_db.rs

+2
Original file line numberDiff line numberDiff line change
@@ -584,6 +584,7 @@ fn well_known_trait_from_lang_item(item: LangItem) -> Option<WellKnownTrait> {
584584
LangItem::Unpin => WellKnownTrait::Unpin,
585585
LangItem::Unsize => WellKnownTrait::Unsize,
586586
LangItem::Tuple => WellKnownTrait::Tuple,
587+
LangItem::PointeeTrait => WellKnownTrait::Pointee,
587588
_ => return None,
588589
})
589590
}
@@ -604,6 +605,7 @@ fn lang_item_from_well_known_trait(trait_: WellKnownTrait) -> LangItem {
604605
WellKnownTrait::Tuple => LangItem::Tuple,
605606
WellKnownTrait::Unpin => LangItem::Unpin,
606607
WellKnownTrait::Unsize => LangItem::Unsize,
608+
WellKnownTrait::Pointee => LangItem::PointeeTrait,
607609
}
608610
}
609611

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

+16
Original file line numberDiff line numberDiff line change
@@ -3400,6 +3400,22 @@ fn func() {
34003400
);
34013401
}
34023402

3403+
#[test]
3404+
fn pointee_trait() {
3405+
check_types(
3406+
r#"
3407+
//- minicore: pointee
3408+
use core::ptr::Pointee;
3409+
fn func() {
3410+
let x: <u8 as Pointee>::Metadata;
3411+
//^ ()
3412+
let x: <[u8] as Pointee>::Metadata;
3413+
//^ usize
3414+
}
3415+
"#,
3416+
);
3417+
}
3418+
34033419
// FIXME
34043420
#[test]
34053421
fn castable_to() {

crates/ide/src/inlay_hints/chaining.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ fn main() {
444444
file_id: FileId(
445445
1,
446446
),
447-
range: 5768..5776,
447+
range: 5769..5777,
448448
},
449449
),
450450
tooltip: "",
@@ -457,7 +457,7 @@ fn main() {
457457
file_id: FileId(
458458
1,
459459
),
460-
range: 5800..5804,
460+
range: 5801..5805,
461461
},
462462
),
463463
tooltip: "",
@@ -478,7 +478,7 @@ fn main() {
478478
file_id: FileId(
479479
1,
480480
),
481-
range: 5768..5776,
481+
range: 5769..5777,
482482
},
483483
),
484484
tooltip: "",
@@ -491,7 +491,7 @@ fn main() {
491491
file_id: FileId(
492492
1,
493493
),
494-
range: 5800..5804,
494+
range: 5801..5805,
495495
},
496496
),
497497
tooltip: "",
@@ -512,7 +512,7 @@ fn main() {
512512
file_id: FileId(
513513
1,
514514
),
515-
range: 5768..5776,
515+
range: 5769..5777,
516516
},
517517
),
518518
tooltip: "",
@@ -525,7 +525,7 @@ fn main() {
525525
file_id: FileId(
526526
1,
527527
),
528-
range: 5800..5804,
528+
range: 5801..5805,
529529
},
530530
),
531531
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

+11
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
//! ord: eq, option
3838
//! panic:
3939
//! pin:
40+
//! pointee:
4041
//! range:
4142
//! result:
4243
//! send: sized
@@ -752,6 +753,16 @@ pub mod result {
752753
}
753754
// endregion:result
754755

756+
// region:pointee
757+
pub mod ptr {
758+
#[lang = "pointee_trait"]
759+
pub trait Pointee {
760+
#[lang = "metadata_type"]
761+
type Metadata;
762+
}
763+
}
764+
// endregion:pointee
765+
755766
// region:pin
756767
pub mod pin {
757768
#[lang = "pin"]

0 commit comments

Comments
 (0)