From 6007e6f649feac9a0cb39270444033f8dbfa9259 Mon Sep 17 00:00:00 2001 From: Esteban Küber Date: Sun, 17 Mar 2019 20:09:53 -0700 Subject: Do not complain about non-existing fields after parse recovery When failing to parse struct-like enum variants, the ADT gets recorded as having no fields. Record that we have actually recovered during parsing of this variant to avoid complaing about non-existing fields when actually using it. --- src/test/ui/parser/recovered-struct-variant.rs | 13 +++++++++++++ src/test/ui/parser/recovered-struct-variant.stderr | 8 ++++++++ 2 files changed, 21 insertions(+) create mode 100644 src/test/ui/parser/recovered-struct-variant.rs create mode 100644 src/test/ui/parser/recovered-struct-variant.stderr (limited to 'src/test/ui/parser') diff --git a/src/test/ui/parser/recovered-struct-variant.rs b/src/test/ui/parser/recovered-struct-variant.rs new file mode 100644 index 00000000000..5b195dcc378 --- /dev/null +++ b/src/test/ui/parser/recovered-struct-variant.rs @@ -0,0 +1,13 @@ +enum Foo { + A { a, b: usize } + //~^ ERROR expected `:`, found `,` +} + +fn main() { + // no complaints about non-existing fields + let f = Foo::A { a:3, b: 4}; + match f { + // no complaints about non-existing fields + Foo::A {a, b} => {} + } +} diff --git a/src/test/ui/parser/recovered-struct-variant.stderr b/src/test/ui/parser/recovered-struct-variant.stderr new file mode 100644 index 00000000000..51aaf8bb3cf --- /dev/null +++ b/src/test/ui/parser/recovered-struct-variant.stderr @@ -0,0 +1,8 @@ +error: expected `:`, found `,` + --> $DIR/recovered-struct-variant.rs:2:10 + | +LL | A { a, b: usize } + | ^ expected `:` + +error: aborting due to previous error + -- cgit 1.4.1-3-g733a5