let exception Foo = ()
let exception Foo as e = ()
let exception (Foo as e) = ()
let exception Foo (a, b) = ()
let exception Foo (a, b) as e = ()
let exception (Foo (a, b) as e) = ()
let exception Foo = ()
let exception Foo as e = ()
let exception Foo as e = ()
let exception (Foo as e) = ()
let exception Foo (a, b) = ()
let exception Foo (a, b) as e = ()
let exception Foo (a, b) as e = ()
let (exception Foo : t exc) = ()
let (exception Foo : t exc) as e = ()
let exception (Foo : t exc) as e = ()
let exception ((Foo : t exc) as e) = ()
;;match x with
  | exception Foo -> ()
  | exception Foo as e -> ()
  | exception (Foo as e) -> ()
  | exception Foo (a, b) -> ()
  | exception Foo -> ()
  | exception Foo as e -> ()
  | exception (Foo as e) -> ()
  | exception Foo (a, b) -> ()
  | (exception Foo : t exc) -> ()
let f [arity:1]exception Foo = ()
let f [arity:1](exception Foo as e) = ()
let f [arity:1]exception (Foo as e) = ()
let f [arity:1]exception Foo (a, b) = ()
let f [arity:1]exception Foo = ()
let f [arity:1](exception Foo as e) = ()
let f [arity:1]exception Foo (a, b) = ()
let f [arity:1](exception Foo : t exc) = ()
;;for exception Foo = 0 to 10 do () done
;;for exception Foo as e = 0 to 10 do () done
;;for exception Foo = 0 to 10 do () done
;;for exception Foo as e = 0 to 10 do () done
;;for exception Foo = 0 to 10 do () done
;;for exception Foo (a, b) = 0 to 10 do () done
;;for exception Foo (a, b) = 0 to 10 do () done
;;for (exception Foo (a, b) : t exc) = 0 to 10 do () done