error: it is currently not sound to use lifetimes in function signatures
 --> $DIR/invalid-imports.rs:7:16
  |
7 |     fn f() -> &'static u32;
  |                ^^^^^^^

error: imported methods must have at least one argument
  --> $DIR/invalid-imports.rs:10:5
   |
10 |     fn f1();
   |     ^^^^^^^^

error: first argument of method must be a shared reference
  --> $DIR/invalid-imports.rs:12:14
   |
12 |     fn f2(x: u32);
   |              ^^^

error: first argument of method must be a path
  --> $DIR/invalid-imports.rs:14:14
   |
14 |     fn f3(x: &&u32);
   |              ^^^^^

error: paths with type parameters are not supported yet
  --> $DIR/invalid-imports.rs:20:15
   |
20 |     fn f4(x: &Bar<T>);
   |               ^^^^^^

error: paths with type parameters are not supported yet
  --> $DIR/invalid-imports.rs:22:15
   |
22 |     fn f4(x: &Fn(T));
   |               ^^^^^

error: constructor returns must be bare types
  --> $DIR/invalid-imports.rs:25:5
   |
25 |     fn f();
   |     ^^^^^^^

error: return value of constructor must be a bare path
  --> $DIR/invalid-imports.rs:29:5
   |
29 |     fn f() -> &Bar;
   |     ^^^^^^^^^^^^^^^

error: must be Result<...>
  --> $DIR/invalid-imports.rs:32:15
   |
32 |     fn f() -> u32;
   |               ^^^

error: must be Result<...>
  --> $DIR/invalid-imports.rs:34:15
   |
34 |     fn f() -> &u32;
   |               ^^^^

error: must have at least one generic parameter
  --> $DIR/invalid-imports.rs:36:15
   |
36 |     fn f() -> Result<>;
   |               ^^^^^^^^

error: it is currently not sound to use lifetimes in function signatures
  --> $DIR/invalid-imports.rs:38:22
   |
38 |     fn f() -> Result<'a>;
   |                      ^^
