! { dg-do compile }
module a

  type, private, bind(C) b ! { dg-error "Expected :: in TYPE definition" }
    integer i
  end type b ! { dg-error "Expecting END MODULE statement" }

  type, public c ! { dg-error "Expected :: in TYPE definition" }
    integer j
  end type c ! { dg-error "Expecting END MODULE statement" }

  type, private d ! { dg-error "Expected :: in TYPE definition" }
    integer k
  end type b ! { dg-error "Expecting END MODULE statement" }

  type, bind(C), public e ! { dg-error "Expected :: in TYPE definition" }
    integer l
  end type e ! { dg-error "Expecting END MODULE statement" }

  type, bind(C) f ! { dg-error "Expected :: in TYPE definition" }
    integer m
  end type f ! { dg-error "Expecting END MODULE statement" }

end module a