// rustfmt-normalize_comments: true

 extern crate       foo    ;   
    extern crate       foo       as bar    ;   

extern crate futures;
extern crate dotenv;
extern crate chrono;

extern crate foo;
extern crate bar;

// #2315
extern crate proc_macro2;
extern crate proc_macro;

// #3128
extern crate serde; // 1.0.78
extern crate serde_derive; // 1.0.78
extern crate serde_json; // 1.0.27

 extern  "C" {
  fn c_func(x: *mut *mut libc::c_void);

  fn c_func(x: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, y: YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY);

    #[test123]
    fn foo() -> uint64_t;

pub fn bar() ;
   }

extern {
        fn DMR_GetDevice(pHDev: *mut HDEV, searchMode: DeviceSearchMode, pSearchString: *const c_char, devNr: c_uint, wildcard: c_char) -> TDMR_ERROR;
        
    fn quux() -> (); // Post comment

  pub      type
      Foo;

          type   Bar;
}

extern "Rust" { static ext:  u32;
    // Some comment.
     pub static  mut var : SomeType ; }

extern "C" {
            fn syscall(number: libc::c_long /* comment 1 */, /* comm 2 */ ... /* sup? */) -> libc::c_long;

    fn  foo  (x:  *const c_char ,    ...   ) ->
libc::c_long;
        }

   extern    {  
                       pub fn freopen(filename: *const c_char, mode: *const c_char
                               , mode2: *const c_char
                               , mode3: *const c_char,
                               file: *mut FILE)
                              -> *mut FILE;


       const fn foo(

       ) ->
                            *mut Bar;
       unsafe fn foo(

       ) -> *
       mut
       Bar;

       pub(super) const fn foo() -> *mut Bar;
       pub(crate) unsafe fn foo() -> *mut Bar;
   }

extern {

}

macro_rules! x {
    ($tt:tt) => {};
}

extern "macros" {
    x!(ident);
    x!(#);
    x![ident];
    x![#];
    x! {ident}
    x! {#}
}