]> git.proxmox.com Git - rustc.git/blobdiff - src/doc/rustc/src/lints/listing/deny-by-default.md
New upstream version 1.41.1+dfsg1
[rustc.git] / src / doc / rustc / src / lints / listing / deny-by-default.md
index 5688e90ada129a8fa0fdc9942be4acff461767ae..dc5a9e44acfa2670b3a5869e7accbe9d82b8ce50 100644 (file)
@@ -45,53 +45,6 @@ error: defaults for type parameters are only allowed in `struct`, `enum`, `type`
   = note: for more information, see issue #36887 <https://github.com/rust-lang/rust/issues/36887>
 ```
 
-## legacy-constructor-visibility
-
-[RFC 1506](https://github.com/rust-lang/rfcs/blob/master/text/1506-adt-kinds.md) modified some
-visibility rules, and changed the visibility of struct constructors. Some
-example code that triggers this lint:
-
-```rust,ignore
-mod m {
-    pub struct S(u8);
-    
-    fn f() {
-        // this is trying to use S from the 'use' line, but because the `u8` is
-        // not pub, it is private
-        ::S;
-    }
-}
-
-use m::S;
-```
-
-This will produce:
-
-```text
-error: private struct constructors are not usable through re-exports in outer modules
- --> src/main.rs:5:9
-  |
-5 |         ::S;
-  |         ^^^
-  |
-  = note: `#[deny(legacy_constructor_visibility)]` on by default
-  = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-  = note: for more information, see issue #39207 <https://github.com/rust-lang/rust/issues/39207>
-```
-
-
-## legacy-directory-ownership
-
-The legacy_directory_ownership warning is issued when
-
-* There is a non-inline module with a `#[path]` attribute (e.g. `#[path = "foo.rs"] mod bar;`),
-* The module's file ("foo.rs" in the above example) is not named "mod.rs", and
-* The module's file contains a non-inline child module without a `#[path]` attribute.
-
-The warning can be fixed by renaming the parent module to "mod.rs" and moving
-it into its own directory if appropriate.
-
-
 ## missing-fragment-specifier
 
 The missing_fragment_specifier warning is issued when an unused pattern in a
@@ -169,39 +122,49 @@ error: literal out of range for u8
   |
 ```
 
-## parenthesized-params-in-types-and-modules
+## patterns-in-fns-without-body
 
-This lint detects incorrect parentheses. Some example code that triggers this
-lint:
+This lint detects patterns in functions without body were that were
+previously erroneously allowed. Some example code that triggers this lint:
 
-```rust,ignore
-let x = 5 as usize();
+```rust,compile_fail
+trait Trait {
+    fn foo(mut arg: u8);
+}
 ```
 
 This will produce:
 
 ```text
-error: parenthesized parameters may only be used with a trait
- --> src/main.rs:2:21
+warning: patterns aren't allowed in methods without bodies
+ --> src/main.rs:2:12
   |
-2 |   let x = 5 as usize();
-  |                     ^^
+2 |     fn foo(mut arg: u8);
+  |            ^^^^^^^
   |
-  = note: `#[deny(parenthesized_params_in_types_and_modules)]` on by default
+  = note: `#[warn(patterns_in_fns_without_body)]` on by default
   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-  = note: for more information, see issue #42238 <https://github.com/rust-lang/rust/issues/42238>
+  = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
 ```
 
-To fix it, remove the `()`s.
+To fix this, remove the pattern; it can be used in the implementation without
+being used in the definition. That is:
 
-## pub-use-of-private-extern-crate
+```rust
+trait Trait {
+    fn foo(arg: u8);
+}
 
-This lint detects a specific situation of re-exporting a private `extern crate`;
+impl Trait for i32 {
+    fn foo(mut arg: u8) {
+
+    }
+}
+```
 
-## safe-extern-statics
+## pub-use-of-private-extern-crate
 
-In older versions of Rust, there was a soundness issue where `extern static`s were allowed
-to be accessed in safe code. This lint now catches and denies this kind of code.
+This lint detects a specific situation of re-exporting a private `extern crate`;
 
 ## unknown-crate-types