#![feature(nonzero)]
#![feature(inclusive_range_fields)]
#![feature(crate_visibility_modifier)]
+#![feature(never_type)]
#![cfg_attr(stage0, feature(try_trait))]
extern crate arena;
#![feature(slice_patterns)]
#![feature(slice_sort_by_cached_key)]
#![feature(dyn_trait)]
+#![feature(never_type)]
#[macro_use] extern crate log;
#[macro_use] extern crate syntax;
/// write:
///
/// ```
+/// #![feature(never_type)]
/// # fn foo() -> u32 {
/// let x: ! = {
/// return 123
/// for example:
///
/// ```
+/// #![feature(never_type)]
/// # use std::fmt;
/// # trait Debug {
/// # fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result;
// Test that a variable of type ! can coerce to another type.
// error-pattern:explicit
+
+#![feature(never_type)]
+
fn main() {
let x: ! = panic!();
let y: u32 = x;
// error-pattern:wowzers!
+#![feature(never_type)]
#![allow(unreachable_code)]
fn foo(x: !) -> ! {
// Test that we can explicitly cast ! to another type
// error-pattern:explicit
+
+#![feature(never_type)]
+
fn main() {
let x: ! = panic!();
let y: u32 = x as u32;
// error-pattern:kapow!
+#![feature(never_type)]
+
trait Foo {
type Wow;
// error-pattern:oh no!
+#![feature(never_type)]
+
struct Wub;
impl PartialEq<!> for Wub {