1c67d6573Sopenharmony_cimacro_rules! noparse(
2c67d6573Sopenharmony_ci    ($name:ident, $re:expr) => (
3c67d6573Sopenharmony_ci        #[test]
4c67d6573Sopenharmony_ci        fn $name() {
5c67d6573Sopenharmony_ci            let re = $re;
6c67d6573Sopenharmony_ci            match regex_new!(re) {
7c67d6573Sopenharmony_ci                Err(_) => {},
8c67d6573Sopenharmony_ci                Ok(_) => panic!("Regex '{}' should cause a parse error.", re),
9c67d6573Sopenharmony_ci            }
10c67d6573Sopenharmony_ci        }
11c67d6573Sopenharmony_ci    );
12c67d6573Sopenharmony_ci);
13c67d6573Sopenharmony_ci
14c67d6573Sopenharmony_cinoparse!(fail_no_repeat_arg, "*");
15c67d6573Sopenharmony_cinoparse!(fail_incomplete_escape, "\\");
16c67d6573Sopenharmony_cinoparse!(fail_class_incomplete, "[A-");
17c67d6573Sopenharmony_cinoparse!(fail_class_not_closed, "[A");
18c67d6573Sopenharmony_cinoparse!(fail_class_no_begin, r"[\A]");
19c67d6573Sopenharmony_cinoparse!(fail_class_no_end, r"[\z]");
20c67d6573Sopenharmony_cinoparse!(fail_class_no_boundary, r"[\b]");
21c67d6573Sopenharmony_cinoparse!(fail_open_paren, "(");
22c67d6573Sopenharmony_cinoparse!(fail_close_paren, ")");
23c67d6573Sopenharmony_cinoparse!(fail_invalid_range, "[a-Z]");
24c67d6573Sopenharmony_cinoparse!(fail_empty_capture_name, "(?P<>a)");
25c67d6573Sopenharmony_cinoparse!(fail_bad_capture_name, "(?P<na-me>)");
26c67d6573Sopenharmony_cinoparse!(fail_bad_flag, "(?a)a");
27c67d6573Sopenharmony_cinoparse!(fail_too_big, "a{10000000}");
28c67d6573Sopenharmony_cinoparse!(fail_counted_no_close, "a{1001");
29c67d6573Sopenharmony_cinoparse!(fail_counted_decreasing, "a{2,1}");
30c67d6573Sopenharmony_cinoparse!(fail_counted_nonnegative, "a{-1,1}");
31c67d6573Sopenharmony_cinoparse!(fail_unfinished_cap, "(?");
32c67d6573Sopenharmony_cinoparse!(fail_unfinished_escape, "\\");
33c67d6573Sopenharmony_cinoparse!(fail_octal_digit, r"\8");
34c67d6573Sopenharmony_cinoparse!(fail_hex_digit, r"\xG0");
35c67d6573Sopenharmony_cinoparse!(fail_hex_short, r"\xF");
36c67d6573Sopenharmony_cinoparse!(fail_hex_long_digits, r"\x{fffg}");
37c67d6573Sopenharmony_cinoparse!(fail_flag_bad, "(?a)");
38c67d6573Sopenharmony_cinoparse!(fail_flag_empty, "(?)");
39c67d6573Sopenharmony_cinoparse!(fail_double_neg, "(?-i-i)");
40c67d6573Sopenharmony_cinoparse!(fail_neg_empty, "(?i-)");
41c67d6573Sopenharmony_cinoparse!(fail_dupe_named, "(?P<a>.)(?P<a>.)");
42c67d6573Sopenharmony_cinoparse!(fail_range_end_no_class, "[a-[:lower:]]");
43c67d6573Sopenharmony_cinoparse!(fail_range_end_no_begin, r"[a-\A]");
44c67d6573Sopenharmony_cinoparse!(fail_range_end_no_end, r"[a-\z]");
45c67d6573Sopenharmony_cinoparse!(fail_range_end_no_boundary, r"[a-\b]");
46