Skip to content

Commit 7b4eb1a

Browse files
Add E0327 error code. Thanks @nagisa for his help!
1 parent b7e41d9 commit 7b4eb1a

File tree

2 files changed

+37
-3
lines changed

2 files changed

+37
-3
lines changed

src/librustc/diagnostics.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,7 @@ const foo: i32 = 42;
10181018
const baz: *const i32 = (&foo as *const i32);
10191019
10201020
const deref: i32 = *baz;
1021-
// error: raw pointers cannot be dereferenced in constants!
1021+
// error: raw pointers cannot be dereferenced in constants
10221022
```
10231023
10241024
To fix this error, please do not assign this value to a constant expression.

src/librustc_typeck/diagnostics.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,42 @@ impl Foo for Bar {
14571457
```
14581458
"##,
14591459

1460+
E0327: r##"
1461+
You cannot use associated items other than constant items as patterns. This
1462+
includes method items. Example of erroneous code:
1463+
1464+
```
1465+
enum B {}
1466+
1467+
impl B {
1468+
fn bb() -> i32 { 0 }
1469+
}
1470+
1471+
fn main() {
1472+
match 0 {
1473+
B::bb => {} // error: associated items in match patterns must
1474+
// be constants
1475+
}
1476+
}
1477+
```
1478+
1479+
Please check that you're not using a method as a pattern. Example:
1480+
1481+
```
1482+
enum B {
1483+
ba,
1484+
bb
1485+
}
1486+
1487+
fn main() {
1488+
match B::ba {
1489+
B::bb => {} // ok!
1490+
_ => {}
1491+
}
1492+
}
1493+
```
1494+
"##,
1495+
14601496
E0368: r##"
14611497
This error indicates that a binary assignment operator like `+=` or `^=` was
14621498
applied to the wrong types. For example:
@@ -1540,7 +1576,6 @@ For more information see the [opt-in builtin traits RFC](https://github.com/rust
15401576

15411577
}
15421578

1543-
15441579
register_diagnostics! {
15451580
E0068,
15461581
E0074,
@@ -1640,7 +1675,6 @@ register_diagnostics! {
16401675
E0323, // implemented an associated const when another trait item expected
16411676
E0324, // implemented a method when another trait item expected
16421677
E0325, // implemented an associated type when another trait item expected
1643-
E0327, // referred to method instead of constant in match pattern
16441678
E0328, // cannot implement Unsize explicitly
16451679
E0329, // associated const depends on type parameter or Self.
16461680
E0366, // dropck forbid specialization to concrete type or region

0 commit comments

Comments
 (0)