diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 7f652c0d7a776..4d297fa918a11 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -197,11 +197,11 @@ pub struct Compiler { #[derive(PartialEq, Eq, Copy, Clone, Debug)] pub enum DocTests { - // Default, run normal tests and doc tests. + /// Run normal tests and doc tests (default). Yes, - // Do not run any doc tests. + /// Do not run any doc tests. No, - // Only run doc tests. + /// Only run doc tests. Only, } @@ -221,10 +221,10 @@ pub enum GitRepo { /// methods specifically on this structure itself (to make it easier to /// organize). pub struct Build { - // User-specified configuration via config.toml + /// User-specified configuration from `config.toml`. config: Config, - // Derived properties from the above two configurations + // Properties derived from the above configuration src: PathBuf, out: PathBuf, rust_info: channel::GitInfo, @@ -240,12 +240,12 @@ pub struct Build { doc_tests: DocTests, verbosity: usize, - // Targets for which to build. + // Targets for which to build build: Interned, hosts: Vec>, targets: Vec>, - // Stage 0 (downloaded) compiler and cargo or their local rust equivalents. + // Stage 0 (downloaded) compiler and cargo or their local rust equivalents initial_rustc: PathBuf, initial_cargo: PathBuf, @@ -255,7 +255,7 @@ pub struct Build { cxx: HashMap, cc::Tool>, ar: HashMap, PathBuf>, ranlib: HashMap, PathBuf>, - // Misc + // Miscellaneous crates: HashMap, Crate>, is_sudo: bool, ci_env: CiEnv, diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 66410482cc6d7..207b0b3754ac6 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -2523,17 +2523,7 @@ impl<'a> Resolver<'a> { debug!("(resolving item) resolving {} ({:?})", name, item.node); match item.node { - ItemKind::Ty(_, ref generics) => { - self.with_current_self_item(item, |this| { - this.with_generic_param_rib(HasGenericParams(generics, ItemRibKind), |this| { - let item_def_id = this.definitions.local_def_id(item.id); - this.with_self_rib(Res::SelfTy(Some(item_def_id), None), |this| { - visit::walk_item(this, item) - }) - }) - }); - } - + ItemKind::Ty(_, ref generics) | ItemKind::Existential(_, ref generics) | ItemKind::Fn(_, _, ref generics, _) => { self.with_generic_param_rib( diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index d578a894add2d..d8c73b2be8258 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -4457,7 +4457,7 @@ pub fn check_bounds_are_used<'tcx>(tcx: TyCtxt<'tcx>, generics: &ty::Generics, t return; } - // Make a vector of booleans initially false, set to true when used. + // Make a vector of booleans initially `false`; set to `true` when used. let mut types_used = vec![false; own_counts.types]; for leaf_ty in ty.walk() { @@ -4466,7 +4466,7 @@ pub fn check_bounds_are_used<'tcx>(tcx: TyCtxt<'tcx>, generics: &ty::Generics, t types_used[index as usize - own_counts.lifetimes] = true; } else if let ty::Error = leaf_ty.sty { // If there is already another error, do not emit - // an error for not using a type Parameter. + // an error for not using a type parameter. assert!(tcx.sess.has_errors()); return; } diff --git a/src/test/ui/cast_char.rs b/src/test/ui/cast-char.rs similarity index 100% rename from src/test/ui/cast_char.rs rename to src/test/ui/cast-char.rs diff --git a/src/test/ui/cast_char.stderr b/src/test/ui/cast-char.stderr similarity index 85% rename from src/test/ui/cast_char.stderr rename to src/test/ui/cast-char.stderr index 37ef98bcb5067..1729e5cbf0931 100644 --- a/src/test/ui/cast_char.stderr +++ b/src/test/ui/cast-char.stderr @@ -1,17 +1,17 @@ error: only `u8` can be cast into `char` - --> $DIR/cast_char.rs:4:23 + --> $DIR/cast-char.rs:4:23 | LL | const XYZ: char = 0x1F888 as char; | ^^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F888}'` | note: lint level defined here - --> $DIR/cast_char.rs:1:9 + --> $DIR/cast-char.rs:1:9 | LL | #![deny(overflowing_literals)] | ^^^^^^^^^^^^^^^^^^^^ error: only `u8` can be cast into `char` - --> $DIR/cast_char.rs:6:22 + --> $DIR/cast-char.rs:6:22 | LL | const XY: char = 129160 as char; | ^^^^^^^^^^^^^^ help: use a `char` literal instead: `'\u{1F888}'` diff --git a/src/test/ui/type-alias/issue-62263-self-in-atb.rs b/src/test/ui/type-alias/issue-62263-self-in-atb.rs new file mode 100644 index 0000000000000..5e812db4d2362 --- /dev/null +++ b/src/test/ui/type-alias/issue-62263-self-in-atb.rs @@ -0,0 +1,8 @@ +pub trait Trait { + type A; +} + +pub type Alias = dyn Trait; +//~^ ERROR failed to resolve: use of undeclared type or module `Self` [E0433] + +fn main() {} diff --git a/src/test/ui/type-alias/issue-62263-self-in-atb.stderr b/src/test/ui/type-alias/issue-62263-self-in-atb.stderr new file mode 100644 index 0000000000000..a642d029f93b5 --- /dev/null +++ b/src/test/ui/type-alias/issue-62263-self-in-atb.stderr @@ -0,0 +1,9 @@ +error[E0433]: failed to resolve: use of undeclared type or module `Self` + --> $DIR/issue-62263-self-in-atb.rs:5:32 + | +LL | pub type Alias = dyn Trait; + | ^^^^ use of undeclared type or module `Self` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0433`. diff --git a/src/test/ui/type-alias/issue-62305-self-assoc-ty.rs b/src/test/ui/type-alias/issue-62305-self-assoc-ty.rs new file mode 100644 index 0000000000000..0b95ddeb19e78 --- /dev/null +++ b/src/test/ui/type-alias/issue-62305-self-assoc-ty.rs @@ -0,0 +1,4 @@ +type Alias = Self::Target; +//~^ ERROR failed to resolve: use of undeclared type or module `Self` [E0433] + +fn main() {} diff --git a/src/test/ui/type-alias/issue-62305-self-assoc-ty.stderr b/src/test/ui/type-alias/issue-62305-self-assoc-ty.stderr new file mode 100644 index 0000000000000..6eb445e9dbcfe --- /dev/null +++ b/src/test/ui/type-alias/issue-62305-self-assoc-ty.stderr @@ -0,0 +1,9 @@ +error[E0433]: failed to resolve: use of undeclared type or module `Self` + --> $DIR/issue-62305-self-assoc-ty.rs:1:14 + | +LL | type Alias = Self::Target; + | ^^^^ use of undeclared type or module `Self` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0433`. diff --git a/src/test/ui/type-alias/issue-62364-self-ty-arg.rs b/src/test/ui/type-alias/issue-62364-self-ty-arg.rs new file mode 100644 index 0000000000000..bebb4a9021aab --- /dev/null +++ b/src/test/ui/type-alias/issue-62364-self-ty-arg.rs @@ -0,0 +1,8 @@ +struct Struct { + field: P1, +} + +type Alias<'a> = Struct<&'a Self>; +//~^ ERROR cannot find type `Self` in this scope [E0411] + +fn main() {} diff --git a/src/test/ui/type-alias/issue-62364-self-ty-arg.stderr b/src/test/ui/type-alias/issue-62364-self-ty-arg.stderr new file mode 100644 index 0000000000000..5ed27760a82dd --- /dev/null +++ b/src/test/ui/type-alias/issue-62364-self-ty-arg.stderr @@ -0,0 +1,9 @@ +error[E0411]: cannot find type `Self` in this scope + --> $DIR/issue-62364-self-ty-arg.rs:5:29 + | +LL | type Alias<'a> = Struct<&'a Self>; + | ^^^^ `Self` is only available in impls, traits, and type definitions + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0411`.