// Test that AST json serialization doesn't ICE (#63728).

// revisions: expand noexpand

//[expand] compile-flags: -Zast-json
//[noexpand] compile-flags: -Zast-json-noexpand

// check-pass
// dont-check-compiler-stdout - don't check for any AST change.

#![feature(llvm_asm)]

enum V {
    A(i32),
    B { f: [i64; 3 + 4] }
}

trait X {
    type Output;
    fn read(&self) -> Self::Output;
    fn write(&mut self, _: Self::Output);
}

macro_rules! call_println {
    ($y:ident) => { println!("{}", $y) }
}

fn main() {
    #[cfg(any(target_arch = "x86",
        target_arch = "x86_64",
        target_arch = "arm",
        target_arch = "aarch64"))]
    unsafe { llvm_asm!(""::::); }

    let x: (i32) = 35;
    let y = x as i64<> + 5;

    call_println!(y);

    struct A;
}
