// run-pass

#![allow(unused_variables)]
#![feature(non_exhaustive)]

#[non_exhaustive]
pub struct NormalStruct {
    pub first_field: u16,
    pub second_field: u16,
}

#[non_exhaustive]
pub struct UnitStruct;

#[non_exhaustive]
pub struct TupleStruct (pub u16, pub u16);

fn main() {
    let ns = NormalStruct { first_field: 640, second_field: 480 };

    let NormalStruct { first_field, second_field } = ns;

    let ts = TupleStruct { 0: 340, 1: 480 };
    let ts_constructor = TupleStruct(340, 480);

    let TupleStruct { 0: first, 1: second } = ts;
    let TupleStruct(first, second) = ts_constructor;

    let us = UnitStruct {};
    let us_constructor = UnitStruct;

    let UnitStruct { } = us;
}
