Skip to content

Commit bd61ad7

Browse files
bors[bot]Jonas Schievink
andauthored
Merge #4849
4849: Make known paths use `core` instead of `std` r=matklad a=jonas-schievink I'm not sure if this causes problems today, but it seems like it easily could, if rust-analyzer processes the libstd sources for the right `--target` and that target is a `#![no_std]`-only target. Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2 parents 7c61700 + 215e229 commit bd61ad7

File tree

7 files changed

+65
-73
lines changed

7 files changed

+65
-73
lines changed

crates/ra_hir_def/src/data.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ impl FunctionData {
9999
}
100100

101101
fn desugar_future_path(orig: TypeRef) -> Path {
102-
let path = path![std::future::Future];
102+
let path = path![core::future::Future];
103103
let mut generic_args: Vec<_> = std::iter::repeat(None).take(path.segments.len() - 1).collect();
104104
let mut last = GenericArgs::empty();
105105
last.bindings.push(AssociatedTypeBinding {

crates/ra_hir_def/src/path.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -323,16 +323,16 @@ pub use hir_expand::name as __name;
323323

324324
#[macro_export]
325325
macro_rules! __known_path {
326-
(std::iter::IntoIterator) => {};
327-
(std::result::Result) => {};
328-
(std::ops::Range) => {};
329-
(std::ops::RangeFrom) => {};
330-
(std::ops::RangeFull) => {};
331-
(std::ops::RangeTo) => {};
332-
(std::ops::RangeToInclusive) => {};
333-
(std::ops::RangeInclusive) => {};
334-
(std::future::Future) => {};
335-
(std::ops::Try) => {};
326+
(core::iter::IntoIterator) => {};
327+
(core::result::Result) => {};
328+
(core::ops::Range) => {};
329+
(core::ops::RangeFrom) => {};
330+
(core::ops::RangeFull) => {};
331+
(core::ops::RangeTo) => {};
332+
(core::ops::RangeToInclusive) => {};
333+
(core::ops::RangeInclusive) => {};
334+
(core::future::Future) => {};
335+
(core::ops::Try) => {};
336336
($path:path) => {
337337
compile_error!("Please register your known path in the path module")
338338
};

crates/ra_hir_ty/src/expr.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -226,17 +226,19 @@ impl<'a, 'b> ExprValidator<'a, 'b> {
226226
None => return,
227227
};
228228

229-
let std_result_path = path![std::result::Result];
229+
let core_result_path = path![core::result::Result];
230230

231231
let resolver = self.func.resolver(db.upcast());
232-
let std_result_enum = match resolver.resolve_known_enum(db.upcast(), &std_result_path) {
232+
let core_result_enum = match resolver.resolve_known_enum(db.upcast(), &core_result_path) {
233233
Some(it) => it,
234234
_ => return,
235235
};
236236

237-
let std_result_ctor = TypeCtor::Adt(AdtId::EnumId(std_result_enum));
237+
let core_result_ctor = TypeCtor::Adt(AdtId::EnumId(core_result_enum));
238238
let params = match &mismatch.expected {
239-
Ty::Apply(ApplicationTy { ctor, parameters }) if ctor == &std_result_ctor => parameters,
239+
Ty::Apply(ApplicationTy { ctor, parameters }) if ctor == &core_result_ctor => {
240+
parameters
241+
}
240242
_ => return,
241243
};
242244

crates/ra_hir_ty/src/infer.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -555,13 +555,13 @@ impl<'a> InferenceContext<'a> {
555555
}
556556

557557
fn resolve_into_iter_item(&self) -> Option<TypeAliasId> {
558-
let path = path![std::iter::IntoIterator];
558+
let path = path![core::iter::IntoIterator];
559559
let trait_ = self.resolver.resolve_known_trait(self.db.upcast(), &path)?;
560560
self.db.trait_data(trait_).associated_type_by_name(&name![Item])
561561
}
562562

563563
fn resolve_ops_try_ok(&self) -> Option<TypeAliasId> {
564-
let path = path![std::ops::Try];
564+
let path = path![core::ops::Try];
565565
let trait_ = self.resolver.resolve_known_trait(self.db.upcast(), &path)?;
566566
self.db.trait_data(trait_).associated_type_by_name(&name![Ok])
567567
}
@@ -587,37 +587,37 @@ impl<'a> InferenceContext<'a> {
587587
}
588588

589589
fn resolve_range_full(&self) -> Option<AdtId> {
590-
let path = path![std::ops::RangeFull];
590+
let path = path![core::ops::RangeFull];
591591
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
592592
Some(struct_.into())
593593
}
594594

595595
fn resolve_range(&self) -> Option<AdtId> {
596-
let path = path![std::ops::Range];
596+
let path = path![core::ops::Range];
597597
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
598598
Some(struct_.into())
599599
}
600600

601601
fn resolve_range_inclusive(&self) -> Option<AdtId> {
602-
let path = path![std::ops::RangeInclusive];
602+
let path = path![core::ops::RangeInclusive];
603603
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
604604
Some(struct_.into())
605605
}
606606

607607
fn resolve_range_from(&self) -> Option<AdtId> {
608-
let path = path![std::ops::RangeFrom];
608+
let path = path![core::ops::RangeFrom];
609609
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
610610
Some(struct_.into())
611611
}
612612

613613
fn resolve_range_to(&self) -> Option<AdtId> {
614-
let path = path![std::ops::RangeTo];
614+
let path = path![core::ops::RangeTo];
615615
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
616616
Some(struct_.into())
617617
}
618618

619619
fn resolve_range_to_inclusive(&self) -> Option<AdtId> {
620-
let path = path![std::ops::RangeToInclusive];
620+
let path = path![core::ops::RangeToInclusive];
621621
let struct_ = self.resolver.resolve_known_struct(self.db.upcast(), &path)?;
622622
Some(struct_.into())
623623
}

crates/ra_hir_ty/src/tests/simple.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ fn foo() {
9595
fn infer_ranges() {
9696
let (db, pos) = TestDB::with_position(
9797
r#"
98-
//- /main.rs crate:main deps:std
98+
//- /main.rs crate:main deps:core
9999
fn test() {
100100
let a = ..;
101101
let b = 1..;
@@ -108,7 +108,7 @@ fn test() {
108108
t<|>;
109109
}
110110
111-
//- /std.rs crate:std
111+
//- /core.rs crate:core
112112
#[prelude_import] use prelude::*;
113113
mod prelude {}
114114

crates/ra_hir_ty/src/tests/traits.rs

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use super::{infer, infer_with_mismatches, type_at, type_at_pos};
1010
fn infer_await() {
1111
let (db, pos) = TestDB::with_position(
1212
r#"
13-
//- /main.rs crate:main deps:std
13+
//- /main.rs crate:main deps:core
1414
1515
struct IntFuture;
1616
@@ -24,7 +24,7 @@ fn test() {
2424
v<|>;
2525
}
2626
27-
//- /std.rs crate:std
27+
//- /core.rs crate:core
2828
#[prelude_import] use future::*;
2929
mod future {
3030
#[lang = "future_trait"]
@@ -42,7 +42,7 @@ mod future {
4242
fn infer_async() {
4343
let (db, pos) = TestDB::with_position(
4444
r#"
45-
//- /main.rs crate:main deps:std
45+
//- /main.rs crate:main deps:core
4646
4747
async fn foo() -> u64 {
4848
128
@@ -54,7 +54,7 @@ fn test() {
5454
v<|>;
5555
}
5656
57-
//- /std.rs crate:std
57+
//- /core.rs crate:core
5858
#[prelude_import] use future::*;
5959
mod future {
6060
#[lang = "future_trait"]
@@ -72,7 +72,7 @@ mod future {
7272
fn infer_desugar_async() {
7373
let (db, pos) = TestDB::with_position(
7474
r#"
75-
//- /main.rs crate:main deps:std
75+
//- /main.rs crate:main deps:core
7676
7777
async fn foo() -> u64 {
7878
128
@@ -83,7 +83,7 @@ fn test() {
8383
r<|>;
8484
}
8585
86-
//- /std.rs crate:std
86+
//- /core.rs crate:core
8787
#[prelude_import] use future::*;
8888
mod future {
8989
trait Future {
@@ -100,15 +100,15 @@ mod future {
100100
fn infer_try() {
101101
let (db, pos) = TestDB::with_position(
102102
r#"
103-
//- /main.rs crate:main deps:std
103+
//- /main.rs crate:main deps:core
104104
105105
fn test() {
106106
let r: Result<i32, u64> = Result::Ok(1);
107107
let v = r?;
108108
v<|>;
109109
}
110110
111-
//- /std.rs crate:std
111+
//- /core.rs crate:core
112112
113113
#[prelude_import] use ops::*;
114114
mod ops {
@@ -140,9 +140,9 @@ mod result {
140140
fn infer_for_loop() {
141141
let (db, pos) = TestDB::with_position(
142142
r#"
143-
//- /main.rs crate:main deps:std
143+
//- /main.rs crate:main deps:core,alloc
144144
145-
use std::collections::Vec;
145+
use alloc::collections::Vec;
146146
147147
fn test() {
148148
let v = Vec::new();
@@ -152,7 +152,7 @@ fn test() {
152152
}
153153
}
154154
155-
//- /std.rs crate:std
155+
//- /core.rs crate:core
156156
157157
#[prelude_import] use iter::*;
158158
mod iter {
@@ -161,14 +161,16 @@ mod iter {
161161
}
162162
}
163163
164+
//- /alloc.rs crate:alloc deps:core
165+
164166
mod collections {
165167
struct Vec<T> {}
166168
impl<T> Vec<T> {
167169
fn new() -> Self { Vec {} }
168170
fn push(&mut self, t: T) { }
169171
}
170172
171-
impl<T> crate::iter::IntoIterator for Vec<T> {
173+
impl<T> IntoIterator for Vec<T> {
172174
type Item=T;
173175
}
174176
}
@@ -2846,12 +2848,12 @@ fn test() {
28462848
fn integer_range_iterate() {
28472849
let t = type_at(
28482850
r#"
2849-
//- /main.rs crate:main deps:std
2851+
//- /main.rs crate:main deps:core
28502852
fn test() {
28512853
for x in 0..100 { x<|>; }
28522854
}
28532855
2854-
//- /std.rs crate:std
2856+
//- /core.rs crate:core
28552857
pub mod ops {
28562858
pub struct Range<Idx> {
28572859
pub start: Idx,

0 commit comments

Comments
 (0)