Conservatively report "not sure" in cfg_accessible
This commit is contained in:
parent
a4d03c6c94
commit
b76d1125d4
6 changed files with 59 additions and 33 deletions
|
@ -443,7 +443,9 @@ impl<'a> ResolverExpand for Resolver<'a> {
|
||||||
PathResult::NonModule(partial_res) if partial_res.unresolved_segments() == 0 => {
|
PathResult::NonModule(partial_res) if partial_res.unresolved_segments() == 0 => {
|
||||||
return Ok(true);
|
return Ok(true);
|
||||||
}
|
}
|
||||||
PathResult::NonModule(..) => {
|
PathResult::NonModule(..) |
|
||||||
|
// HACK(Urgau): This shouldn't be necessary
|
||||||
|
PathResult::Failed { is_error_from_last_segment: false, .. } => {
|
||||||
self.session
|
self.session
|
||||||
.struct_span_err(span, "not sure whether the path is accessible or not")
|
.struct_span_err(span, "not sure whether the path is accessible or not")
|
||||||
.note("the type may have associated items, but we are currently not checking them")
|
.note("the type may have associated items, but we are currently not checking them")
|
||||||
|
|
|
@ -5,20 +5,8 @@
|
||||||
#![feature(cfg_accessible)]
|
#![feature(cfg_accessible)]
|
||||||
#![feature(trait_alias)]
|
#![feature(trait_alias)]
|
||||||
|
|
||||||
enum Enum {
|
|
||||||
Existing { existing: u8 },
|
|
||||||
}
|
|
||||||
|
|
||||||
trait TraitAlias = std::fmt::Debug + Send;
|
trait TraitAlias = std::fmt::Debug + Send;
|
||||||
|
|
||||||
// FIXME: Currently returns `false` but should be "not sure"
|
|
||||||
#[cfg_accessible(Enum::Existing::existing)]
|
|
||||||
const A: bool = true;
|
|
||||||
|
|
||||||
// FIXME: Currently returns `false` but should be "not sure"
|
|
||||||
#[cfg_accessible(Enum::Existing::unresolved)]
|
|
||||||
const B: bool = true;
|
|
||||||
|
|
||||||
// FIXME: Currently shows "cannot determine" but should be `false`
|
// FIXME: Currently shows "cannot determine" but should be `false`
|
||||||
#[cfg_accessible(unresolved)] //~ ERROR cannot determine
|
#[cfg_accessible(unresolved)] //~ ERROR cannot determine
|
||||||
const C: bool = true;
|
const C: bool = true;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-bugs.rs:28:18
|
--> $DIR/cfg_accessible-bugs.rs:15:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(TraitAlias::unresolved)]
|
LL | #[cfg_accessible(TraitAlias::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -7,7 +7,7 @@ LL | #[cfg_accessible(TraitAlias::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: cannot determine whether the path is accessible or not
|
error: cannot determine whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-bugs.rs:24:1
|
--> $DIR/cfg_accessible-bugs.rs:11:1
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(unresolved)]
|
LL | #[cfg_accessible(unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
@ -33,13 +33,29 @@ LL | #[cfg_accessible(Union::unresolved)]
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:36:18
|
--> $DIR/cfg_accessible-not_sure.rs:36:18
|
||||||
|
|
|
|
||||||
|
LL | #[cfg_accessible(Enum::Existing::existing)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
|
error: not sure whether the path is accessible or not
|
||||||
|
--> $DIR/cfg_accessible-not_sure.rs:38:18
|
||||||
|
|
|
||||||
|
LL | #[cfg_accessible(Enum::Existing::unresolved)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
|
error: not sure whether the path is accessible or not
|
||||||
|
--> $DIR/cfg_accessible-not_sure.rs:40:18
|
||||||
|
|
|
||||||
LL | #[cfg_accessible(Enum::unresolved)]
|
LL | #[cfg_accessible(Enum::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:46:18
|
--> $DIR/cfg_accessible-not_sure.rs:50:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(Trait::existing)]
|
LL | #[cfg_accessible(Trait::existing)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
@ -47,7 +63,7 @@ LL | #[cfg_accessible(Trait::existing)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:48:18
|
--> $DIR/cfg_accessible-not_sure.rs:52:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(Trait::unresolved)]
|
LL | #[cfg_accessible(Trait::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
@ -55,7 +71,7 @@ LL | #[cfg_accessible(Trait::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:55:18
|
--> $DIR/cfg_accessible-not_sure.rs:59:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(TypeAlias::existing)]
|
LL | #[cfg_accessible(TypeAlias::existing)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -63,7 +79,7 @@ LL | #[cfg_accessible(TypeAlias::existing)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:57:18
|
--> $DIR/cfg_accessible-not_sure.rs:61:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(TypeAlias::unresolved)]
|
LL | #[cfg_accessible(TypeAlias::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -71,7 +87,7 @@ LL | #[cfg_accessible(TypeAlias::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:66:18
|
--> $DIR/cfg_accessible-not_sure.rs:70:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(ForeignType::unresolved)]
|
LL | #[cfg_accessible(ForeignType::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -79,7 +95,7 @@ LL | #[cfg_accessible(ForeignType::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:75:18
|
--> $DIR/cfg_accessible-not_sure.rs:79:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -87,7 +103,7 @@ LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:80:18
|
--> $DIR/cfg_accessible-not_sure.rs:84:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(u8::unresolved)]
|
LL | #[cfg_accessible(u8::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
@ -95,12 +111,12 @@ LL | #[cfg_accessible(u8::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:82:18
|
--> $DIR/cfg_accessible-not_sure.rs:86:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(u8::is_ascii)]
|
LL | #[cfg_accessible(u8::is_ascii)]
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: aborting due to 13 previous errors
|
error: aborting due to 15 previous errors
|
||||||
|
|
||||||
|
|
|
@ -33,13 +33,29 @@ LL | #[cfg_accessible(Union::unresolved)]
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:36:18
|
--> $DIR/cfg_accessible-not_sure.rs:36:18
|
||||||
|
|
|
|
||||||
|
LL | #[cfg_accessible(Enum::Existing::existing)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
|
error: not sure whether the path is accessible or not
|
||||||
|
--> $DIR/cfg_accessible-not_sure.rs:38:18
|
||||||
|
|
|
||||||
|
LL | #[cfg_accessible(Enum::Existing::unresolved)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
|
error: not sure whether the path is accessible or not
|
||||||
|
--> $DIR/cfg_accessible-not_sure.rs:40:18
|
||||||
|
|
|
||||||
LL | #[cfg_accessible(Enum::unresolved)]
|
LL | #[cfg_accessible(Enum::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:46:18
|
--> $DIR/cfg_accessible-not_sure.rs:50:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(Trait::existing)]
|
LL | #[cfg_accessible(Trait::existing)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
@ -47,7 +63,7 @@ LL | #[cfg_accessible(Trait::existing)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:48:18
|
--> $DIR/cfg_accessible-not_sure.rs:52:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(Trait::unresolved)]
|
LL | #[cfg_accessible(Trait::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
@ -55,7 +71,7 @@ LL | #[cfg_accessible(Trait::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:55:18
|
--> $DIR/cfg_accessible-not_sure.rs:59:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(TypeAlias::existing)]
|
LL | #[cfg_accessible(TypeAlias::existing)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -63,7 +79,7 @@ LL | #[cfg_accessible(TypeAlias::existing)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:57:18
|
--> $DIR/cfg_accessible-not_sure.rs:61:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(TypeAlias::unresolved)]
|
LL | #[cfg_accessible(TypeAlias::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -71,7 +87,7 @@ LL | #[cfg_accessible(TypeAlias::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:66:18
|
--> $DIR/cfg_accessible-not_sure.rs:70:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(ForeignType::unresolved)]
|
LL | #[cfg_accessible(ForeignType::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -79,7 +95,7 @@ LL | #[cfg_accessible(ForeignType::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:75:18
|
--> $DIR/cfg_accessible-not_sure.rs:79:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -87,7 +103,7 @@ LL | #[cfg_accessible(AssocType::AssocType::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:80:18
|
--> $DIR/cfg_accessible-not_sure.rs:84:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(u8::unresolved)]
|
LL | #[cfg_accessible(u8::unresolved)]
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
@ -95,12 +111,12 @@ LL | #[cfg_accessible(u8::unresolved)]
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: not sure whether the path is accessible or not
|
error: not sure whether the path is accessible or not
|
||||||
--> $DIR/cfg_accessible-not_sure.rs:82:18
|
--> $DIR/cfg_accessible-not_sure.rs:86:18
|
||||||
|
|
|
|
||||||
LL | #[cfg_accessible(u8::is_ascii)]
|
LL | #[cfg_accessible(u8::is_ascii)]
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: the type may have associated items, but we are currently not checking them
|
= note: the type may have associated items, but we are currently not checking them
|
||||||
|
|
||||||
error: aborting due to 13 previous errors
|
error: aborting due to 15 previous errors
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,10 @@ enum Enum {
|
||||||
Existing { existing: u8 },
|
Existing { existing: u8 },
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg_accessible(Enum::Existing::existing)] //~ ERROR not sure
|
||||||
|
const A: bool = true;
|
||||||
|
#[cfg_accessible(Enum::Existing::unresolved)] //~ ERROR not sure
|
||||||
|
const B: bool = true;
|
||||||
#[cfg_accessible(Enum::unresolved)] //~ ERROR not sure
|
#[cfg_accessible(Enum::unresolved)] //~ ERROR not sure
|
||||||
const C: bool = true;
|
const C: bool = true;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue