pub fn main() {

    return;
    return ();
    return as ();
    return return as ();
    return return return;

    return if true {
        ()
    } else {
        ()
    };

    loop {
        return break as ();
    }

    return enum; //~ ERROR expected one of `.`, `;`, `?`, `}`, or an operator, found keyword `enum`
}
