error: only lifetime parameters can be used in this context
  --> $DIR/cfg-generic-params.rs:7:45
   |
LL | type FnBad = for<#[cfg(no)] 'a, #[cfg(yes)] T> fn();
   |                                             ^

error: only lifetime parameters can be used in this context
  --> $DIR/cfg-generic-params.rs:11:51
   |
LL | type PolyBad = dyn for<#[cfg(no)] 'a, #[cfg(yes)] T> Copy;
   |                                                   ^

error: only lifetime parameters can be used in this context
  --> $DIR/cfg-generic-params.rs:15:54
   |
LL | struct WhereBad where for<#[cfg(no)] 'a, #[cfg(yes)] T> u8: Copy;
   |                                                      ^

error: cannot find attribute `unknown` in this scope
  --> $DIR/cfg-generic-params.rs:34:43
   |
LL | struct WhereYes where for<#[cfg_attr(yes, unknown)] 'a> u8: Copy;
   |                                           ^^^^^^^

error: cannot find attribute `unknown` in this scope
  --> $DIR/cfg-generic-params.rs:30:40
   |
LL | type PolyYes = dyn for<#[cfg_attr(yes, unknown)] 'a> Copy;
   |                                        ^^^^^^^

error: cannot find attribute `unknown` in this scope
  --> $DIR/cfg-generic-params.rs:26:34
   |
LL | type FnYes = for<#[cfg_attr(yes, unknown)] 'a> fn();
   |                                  ^^^^^^^

error: cannot find attribute `unknown` in this scope
  --> $DIR/cfg-generic-params.rs:22:29
   |
LL | fn f_ty_yes<#[cfg_attr(yes, unknown)] T>() {}
   |                             ^^^^^^^

error: cannot find attribute `unknown` in this scope
  --> $DIR/cfg-generic-params.rs:19:29
   |
LL | fn f_lt_yes<#[cfg_attr(yes, unknown)] 'a>() {}
   |                             ^^^^^^^

error: aborting due to 8 previous errors

