# frozen_string_literal: true module Mutant class AST # Groups of node types module Types # rubocop:disable Metrics/ModuleLength ASSIGNABLE_VARIABLES = Set.new(%i[ivasgn lvasgn cvasgn gvasgn]).freeze # Set of op-assign types OP_ASSIGN = Set.new(%i[or_asgn and_asgn op_asgn]).freeze # Set of node types that are not valid when emitted standalone NOT_STANDALONE = Set.new(%i[splat restarg block_pass]).freeze INDEX_OPERATORS = Set.new(%i[[] []=]).freeze UNARY_METHOD_OPERATORS = Set.new(%i[~@ +@ -@ !]).freeze # Operators ruby implements as methods METHOD_OPERATORS = Set.new(%i[ ! != !~ % & * ** + +@ - -@ / < << <= <=> == === =~ > >= >> [] []= ^ | ~@ ]).freeze BINARY_METHOD_OPERATORS = Set.new( METHOD_OPERATORS - (INDEX_OPERATORS + UNARY_METHOD_OPERATORS) ) # Nodes that are NOT handled by mutant. # # not - 1.8 only, mutant does not support 1.8 # BLACKLIST = Set.new(%i[not]).freeze # Nodes generated by regular expression body parsing REGEXP = Set.new(%i[ regexp_adlam_nonproperty regexp_adlam_property regexp_age=1.1_nonproperty regexp_age=1.1_property regexp_age=10.0_nonproperty regexp_age=10.0_property regexp_age=11.0_nonproperty regexp_age=11.0_property regexp_age=12.0_nonproperty regexp_age=12.0_property regexp_age=12.1_nonproperty regexp_age=12.1_property regexp_age=13.0_nonproperty regexp_age=13.0_property regexp_age=2.0_nonproperty regexp_age=2.0_property regexp_age=2.1_nonproperty regexp_age=2.1_property regexp_age=3.0_nonproperty regexp_age=3.0_property regexp_age=3.1_nonproperty regexp_age=3.1_property regexp_age=3.2_nonproperty regexp_age=3.2_property regexp_age=4.0_nonproperty regexp_age=4.0_property regexp_age=4.1_nonproperty regexp_age=4.1_property regexp_age=5.0_nonproperty regexp_age=5.0_property regexp_age=5.1_nonproperty regexp_age=5.1_property regexp_age=5.2_nonproperty regexp_age=5.2_property regexp_age=6.0_nonproperty regexp_age=6.0_property regexp_age=6.1_nonproperty regexp_age=6.1_property regexp_age=6.2_nonproperty regexp_age=6.2_property regexp_age=6.3_nonproperty regexp_age=6.3_property regexp_age=7.0_nonproperty regexp_age=7.0_property regexp_age=8.0_nonproperty regexp_age=8.0_property regexp_age=9.0_nonproperty regexp_age=9.0_property regexp_ahom_nonproperty regexp_ahom_property regexp_alnum_nonproperty regexp_alnum_posixclass regexp_alnum_property regexp_alpha_nonproperty regexp_alpha_posixclass regexp_alpha_property regexp_alphabetic_nonproperty regexp_alphabetic_property regexp_alternation_escape regexp_alternation_meta regexp_anatolian_hieroglyphs_nonproperty regexp_anatolian_hieroglyphs_property regexp_any_nonproperty regexp_any_property regexp_arabic_nonproperty regexp_arabic_property regexp_armenian_nonproperty regexp_armenian_property regexp_ascii_hex_digit_nonproperty regexp_ascii_hex_digit_property regexp_ascii_nonproperty regexp_ascii_posixclass regexp_ascii_property regexp_assigned_nonproperty regexp_assigned_property regexp_atomic_group regexp_avestan_nonproperty regexp_avestan_property regexp_backslash_escape regexp_backspace_escape regexp_balinese_nonproperty regexp_balinese_property regexp_bamum_nonproperty regexp_bamum_property regexp_bassa_vah_nonproperty regexp_bassa_vah_property regexp_batak_nonproperty regexp_batak_property regexp_bell_escape regexp_bengali_nonproperty regexp_bengali_property regexp_bhaiksuki_nonproperty regexp_bhaiksuki_property regexp_bidi_control_nonproperty regexp_bidi_control_property regexp_blank_nonproperty regexp_blank_posixclass regexp_blank_property regexp_bol_anchor regexp_bol_escape regexp_bopomofo_nonproperty regexp_bopomofo_property regexp_bos_anchor regexp_brahmi_nonproperty regexp_brahmi_property regexp_braille_nonproperty regexp_braille_property regexp_buginese_nonproperty regexp_buginese_property regexp_buhid_nonproperty regexp_buhid_property regexp_canadian_aboriginal_nonproperty regexp_canadian_aboriginal_property regexp_capture_group regexp_carian_nonproperty regexp_carian_property regexp_carriage_escape regexp_case_ignorable_nonproperty regexp_case_ignorable_property regexp_cased_letter_nonproperty regexp_cased_letter_property regexp_cased_nonproperty regexp_cased_property regexp_caucasian_albanian_nonproperty regexp_caucasian_albanian_property regexp_chakma_nonproperty regexp_chakma_property regexp_cham_nonproperty regexp_cham_property regexp_changes_when_casefolded_nonproperty regexp_changes_when_casefolded_property regexp_changes_when_casemapped_nonproperty regexp_changes_when_casemapped_property regexp_changes_when_lowercased_nonproperty regexp_changes_when_lowercased_property regexp_changes_when_titlecased_nonproperty regexp_changes_when_titlecased_property regexp_changes_when_uppercased_nonproperty regexp_changes_when_uppercased_property regexp_character_set regexp_cherokee_nonproperty regexp_cherokee_property regexp_chorasmian_nonproperty regexp_chorasmian_property regexp_close_punctuation_nonproperty regexp_close_punctuation_property regexp_cntrl_nonproperty regexp_cntrl_posixclass regexp_cntrl_property regexp_codepoint_escape regexp_codepoint_list_escape regexp_combining_mark_nonproperty regexp_combining_mark_property regexp_comment_free_space regexp_comment_group regexp_common_nonproperty regexp_common_property regexp_condition_conditional regexp_connector_punctuation_nonproperty regexp_connector_punctuation_property regexp_control_escape regexp_control_nonproperty regexp_control_property regexp_coptic_nonproperty regexp_coptic_property regexp_cuneiform_nonproperty regexp_cuneiform_property regexp_currency_symbol_nonproperty regexp_currency_symbol_property regexp_cypriot_nonproperty regexp_cypriot_property regexp_cyrillic_nonproperty regexp_cyrillic_property regexp_dash_nonproperty regexp_dash_property regexp_dash_punctuation_nonproperty regexp_dash_punctuation_property regexp_decimal_number_nonproperty regexp_decimal_number_property regexp_default_ignorable_code_point_nonproperty regexp_default_ignorable_code_point_property regexp_deprecated_nonproperty regexp_deprecated_property regexp_deseret_nonproperty regexp_deseret_property regexp_devanagari_nonproperty regexp_devanagari_property regexp_diacritic_nonproperty regexp_diacritic_property regexp_digit_nonproperty regexp_digit_posixclass regexp_digit_property regexp_digit_type regexp_dives_akuru_nonproperty regexp_dives_akuru_property regexp_dogra_nonproperty regexp_dogra_property regexp_dot_escape regexp_dot_meta regexp_duployan_nonproperty regexp_duployan_property regexp_egyptian_hieroglyphs_nonproperty regexp_egyptian_hieroglyphs_property regexp_elbasan_nonproperty regexp_elbasan_property regexp_elymaic_nonproperty regexp_elymaic_property regexp_emoji_component_nonproperty regexp_emoji_component_property regexp_emoji_modifier_base_nonproperty regexp_emoji_modifier_base_property regexp_emoji_modifier_nonproperty regexp_emoji_modifier_property regexp_emoji_nonproperty regexp_emoji_presentation_nonproperty regexp_emoji_presentation_property regexp_emoji_property regexp_enclosing_mark_nonproperty regexp_enclosing_mark_property regexp_eol_anchor regexp_eol_escape regexp_eos_anchor regexp_eos_ob_eol_anchor regexp_escape_escape regexp_ethiopic_nonproperty regexp_ethiopic_property regexp_extender_nonproperty regexp_extender_property regexp_final_punctuation_nonproperty regexp_final_punctuation_property regexp_form_feed_escape regexp_format_nonproperty regexp_format_property regexp_georgian_nonproperty regexp_georgian_property regexp_glagolitic_nonproperty regexp_glagolitic_property regexp_gothic_nonproperty regexp_gothic_property regexp_grantha_nonproperty regexp_grantha_property regexp_graph_nonproperty regexp_graph_posixclass regexp_graph_property regexp_grapheme_base_nonproperty regexp_grapheme_base_property regexp_grapheme_extend_nonproperty regexp_grapheme_extend_property regexp_grapheme_link_nonproperty regexp_grapheme_link_property regexp_greedy_interval regexp_greedy_one_or_more regexp_greedy_zero_or_more regexp_greedy_zero_or_one regexp_greek_nonproperty regexp_greek_property regexp_group_close_escape regexp_group_open_escape regexp_gujarati_nonproperty regexp_gujarati_property regexp_gunjala_gondi_nonproperty regexp_gunjala_gondi_property regexp_gurmukhi_nonproperty regexp_gurmukhi_property regexp_han_nonproperty regexp_han_property regexp_hangul_nonproperty regexp_hangul_property regexp_hanifi_rohingya_nonproperty regexp_hanifi_rohingya_property regexp_hanunoo_nonproperty regexp_hanunoo_property regexp_hatran_nonproperty regexp_hatran_property regexp_hebrew_nonproperty regexp_hebrew_property regexp_hex_digit_nonproperty regexp_hex_digit_property regexp_hex_escape regexp_hex_type regexp_hiragana_nonproperty regexp_hiragana_property regexp_hyphen_nonproperty regexp_hyphen_property regexp_id_continue_nonproperty regexp_id_continue_property regexp_id_start_nonproperty regexp_id_start_property regexp_ideographic_nonproperty regexp_ideographic_property regexp_ids_binary_operator_nonproperty regexp_ids_binary_operator_property regexp_ids_trinary_operator_nonproperty regexp_ids_trinary_operator_property regexp_imperial_aramaic_nonproperty regexp_imperial_aramaic_property regexp_in_adlam_nonproperty regexp_in_adlam_property regexp_in_aegean_numbers_nonproperty regexp_in_aegean_numbers_property regexp_in_ahom_nonproperty regexp_in_ahom_property regexp_in_alchemical_symbols_nonproperty regexp_in_alchemical_symbols_property regexp_in_alphabetic_presentation_forms_nonproperty regexp_in_alphabetic_presentation_forms_property regexp_in_anatolian_hieroglyphs_nonproperty regexp_in_anatolian_hieroglyphs_property regexp_in_ancient_greek_musical_notation_nonproperty regexp_in_ancient_greek_musical_notation_property regexp_in_ancient_greek_numbers_nonproperty regexp_in_ancient_greek_numbers_property regexp_in_ancient_symbols_nonproperty regexp_in_ancient_symbols_property regexp_in_arabic_extended_a_nonproperty regexp_in_arabic_extended_a_property regexp_in_arabic_mathematical_alphabetic_symbols_nonproperty regexp_in_arabic_mathematical_alphabetic_symbols_property regexp_in_arabic_nonproperty regexp_in_arabic_presentation_forms_a_nonproperty regexp_in_arabic_presentation_forms_a_property regexp_in_arabic_presentation_forms_b_nonproperty regexp_in_arabic_presentation_forms_b_property regexp_in_arabic_property regexp_in_arabic_supplement_nonproperty regexp_in_arabic_supplement_property regexp_in_armenian_nonproperty regexp_in_armenian_property regexp_in_arrows_nonproperty regexp_in_arrows_property regexp_in_avestan_nonproperty regexp_in_avestan_property regexp_in_balinese_nonproperty regexp_in_balinese_property regexp_in_bamum_nonproperty regexp_in_bamum_property regexp_in_bamum_supplement_nonproperty regexp_in_bamum_supplement_property regexp_in_basic_latin_nonproperty regexp_in_basic_latin_property regexp_in_bassa_vah_nonproperty regexp_in_bassa_vah_property regexp_in_batak_nonproperty regexp_in_batak_property regexp_in_bengali_nonproperty regexp_in_bengali_property regexp_in_bhaiksuki_nonproperty regexp_in_bhaiksuki_property regexp_in_block_elements_nonproperty regexp_in_block_elements_property regexp_in_bopomofo_extended_nonproperty regexp_in_bopomofo_extended_property regexp_in_bopomofo_nonproperty regexp_in_bopomofo_property regexp_in_box_drawing_nonproperty regexp_in_box_drawing_property regexp_in_brahmi_nonproperty regexp_in_brahmi_property regexp_in_braille_patterns_nonproperty regexp_in_braille_patterns_property regexp_in_buginese_nonproperty regexp_in_buginese_property regexp_in_buhid_nonproperty regexp_in_buhid_property regexp_in_byzantine_musical_symbols_nonproperty regexp_in_byzantine_musical_symbols_property regexp_in_carian_nonproperty regexp_in_carian_property regexp_in_caucasian_albanian_nonproperty regexp_in_caucasian_albanian_property regexp_in_chakma_nonproperty regexp_in_chakma_property regexp_in_cham_nonproperty regexp_in_cham_property regexp_in_cherokee_nonproperty regexp_in_cherokee_property regexp_in_cherokee_supplement_nonproperty regexp_in_cherokee_supplement_property regexp_in_chess_symbols_nonproperty regexp_in_chess_symbols_property regexp_in_chorasmian_nonproperty regexp_in_chorasmian_property regexp_in_cjk_compatibility_forms_nonproperty regexp_in_cjk_compatibility_forms_property regexp_in_cjk_compatibility_ideographs_nonproperty regexp_in_cjk_compatibility_ideographs_property regexp_in_cjk_compatibility_ideographs_supplement_nonproperty regexp_in_cjk_compatibility_ideographs_supplement_property regexp_in_cjk_compatibility_nonproperty regexp_in_cjk_compatibility_property regexp_in_cjk_radicals_supplement_nonproperty regexp_in_cjk_radicals_supplement_property regexp_in_cjk_strokes_nonproperty regexp_in_cjk_strokes_property regexp_in_cjk_symbols_and_punctuation_nonproperty regexp_in_cjk_symbols_and_punctuation_property regexp_in_cjk_unified_ideographs_extension_a_nonproperty regexp_in_cjk_unified_ideographs_extension_a_property regexp_in_cjk_unified_ideographs_extension_b_nonproperty regexp_in_cjk_unified_ideographs_extension_b_property regexp_in_cjk_unified_ideographs_extension_c_nonproperty regexp_in_cjk_unified_ideographs_extension_c_property regexp_in_cjk_unified_ideographs_extension_d_nonproperty regexp_in_cjk_unified_ideographs_extension_d_property regexp_in_cjk_unified_ideographs_extension_e_nonproperty regexp_in_cjk_unified_ideographs_extension_e_property regexp_in_cjk_unified_ideographs_extension_f_nonproperty regexp_in_cjk_unified_ideographs_extension_f_property regexp_in_cjk_unified_ideographs_extension_g_nonproperty regexp_in_cjk_unified_ideographs_extension_g_property regexp_in_cjk_unified_ideographs_nonproperty regexp_in_cjk_unified_ideographs_property regexp_in_combining_diacritical_marks_extended_nonproperty regexp_in_combining_diacritical_marks_extended_property regexp_in_combining_diacritical_marks_for_symbols_nonproperty regexp_in_combining_diacritical_marks_for_symbols_property regexp_in_combining_diacritical_marks_nonproperty regexp_in_combining_diacritical_marks_property regexp_in_combining_diacritical_marks_supplement_nonproperty regexp_in_combining_diacritical_marks_supplement_property regexp_in_combining_half_marks_nonproperty regexp_in_combining_half_marks_property regexp_in_common_indic_number_forms_nonproperty regexp_in_common_indic_number_forms_property regexp_in_control_pictures_nonproperty regexp_in_control_pictures_property regexp_in_coptic_epact_numbers_nonproperty regexp_in_coptic_epact_numbers_property regexp_in_coptic_nonproperty regexp_in_coptic_property regexp_in_counting_rod_numerals_nonproperty regexp_in_counting_rod_numerals_property regexp_in_cuneiform_nonproperty regexp_in_cuneiform_numbers_and_punctuation_nonproperty regexp_in_cuneiform_numbers_and_punctuation_property regexp_in_cuneiform_property regexp_in_currency_symbols_nonproperty regexp_in_currency_symbols_property regexp_in_cypriot_syllabary_nonproperty regexp_in_cypriot_syllabary_property regexp_in_cyrillic_extended_a_nonproperty regexp_in_cyrillic_extended_a_property regexp_in_cyrillic_extended_b_nonproperty regexp_in_cyrillic_extended_b_property regexp_in_cyrillic_extended_c_nonproperty regexp_in_cyrillic_extended_c_property regexp_in_cyrillic_nonproperty regexp_in_cyrillic_property regexp_in_cyrillic_supplement_nonproperty regexp_in_cyrillic_supplement_property regexp_in_deseret_nonproperty regexp_in_deseret_property regexp_in_devanagari_extended_nonproperty regexp_in_devanagari_extended_property regexp_in_devanagari_nonproperty regexp_in_devanagari_property regexp_in_dingbats_nonproperty regexp_in_dingbats_property regexp_in_dives_akuru_nonproperty regexp_in_dives_akuru_property regexp_in_dogra_nonproperty regexp_in_dogra_property regexp_in_domino_tiles_nonproperty regexp_in_domino_tiles_property regexp_in_duployan_nonproperty regexp_in_duployan_property regexp_in_early_dynastic_cuneiform_nonproperty regexp_in_early_dynastic_cuneiform_property regexp_in_egyptian_hieroglyph_format_controls_nonproperty regexp_in_egyptian_hieroglyph_format_controls_property regexp_in_egyptian_hieroglyphs_nonproperty regexp_in_egyptian_hieroglyphs_property regexp_in_elbasan_nonproperty regexp_in_elbasan_property regexp_in_elymaic_nonproperty regexp_in_elymaic_property regexp_in_emoticons_nonproperty regexp_in_emoticons_property regexp_in_enclosed_alphanumeric_supplement_nonproperty regexp_in_enclosed_alphanumeric_supplement_property regexp_in_enclosed_alphanumerics_nonproperty regexp_in_enclosed_alphanumerics_property regexp_in_enclosed_cjk_letters_and_months_nonproperty regexp_in_enclosed_cjk_letters_and_months_property regexp_in_enclosed_ideographic_supplement_nonproperty regexp_in_enclosed_ideographic_supplement_property regexp_in_ethiopic_extended_a_nonproperty regexp_in_ethiopic_extended_a_property regexp_in_ethiopic_extended_nonproperty regexp_in_ethiopic_extended_property regexp_in_ethiopic_nonproperty regexp_in_ethiopic_property regexp_in_ethiopic_supplement_nonproperty regexp_in_ethiopic_supplement_property regexp_in_general_punctuation_nonproperty regexp_in_general_punctuation_property regexp_in_geometric_shapes_extended_nonproperty regexp_in_geometric_shapes_extended_property regexp_in_geometric_shapes_nonproperty regexp_in_geometric_shapes_property regexp_in_georgian_extended_nonproperty regexp_in_georgian_extended_property regexp_in_georgian_nonproperty regexp_in_georgian_property regexp_in_georgian_supplement_nonproperty regexp_in_georgian_supplement_property regexp_in_glagolitic_nonproperty regexp_in_glagolitic_property regexp_in_glagolitic_supplement_nonproperty regexp_in_glagolitic_supplement_property regexp_in_gothic_nonproperty regexp_in_gothic_property regexp_in_grantha_nonproperty regexp_in_grantha_property regexp_in_greek_and_coptic_nonproperty regexp_in_greek_and_coptic_property regexp_in_greek_extended_nonproperty regexp_in_greek_extended_property regexp_in_gujarati_nonproperty regexp_in_gujarati_property regexp_in_gunjala_gondi_nonproperty regexp_in_gunjala_gondi_property regexp_in_gurmukhi_nonproperty regexp_in_gurmukhi_property regexp_in_halfwidth_and_fullwidth_forms_nonproperty regexp_in_halfwidth_and_fullwidth_forms_property regexp_in_hangul_compatibility_jamo_nonproperty regexp_in_hangul_compatibility_jamo_property regexp_in_hangul_jamo_extended_a_nonproperty regexp_in_hangul_jamo_extended_a_property regexp_in_hangul_jamo_extended_b_nonproperty regexp_in_hangul_jamo_extended_b_property regexp_in_hangul_jamo_nonproperty regexp_in_hangul_jamo_property regexp_in_hangul_syllables_nonproperty regexp_in_hangul_syllables_property regexp_in_hanifi_rohingya_nonproperty regexp_in_hanifi_rohingya_property regexp_in_hanunoo_nonproperty regexp_in_hanunoo_property regexp_in_hatran_nonproperty regexp_in_hatran_property regexp_in_hebrew_nonproperty regexp_in_hebrew_property regexp_in_high_private_use_surrogates_nonproperty regexp_in_high_private_use_surrogates_property regexp_in_high_surrogates_nonproperty regexp_in_high_surrogates_property regexp_in_hiragana_nonproperty regexp_in_hiragana_property regexp_in_ideographic_description_characters_nonproperty regexp_in_ideographic_description_characters_property regexp_in_ideographic_symbols_and_punctuation_nonproperty regexp_in_ideographic_symbols_and_punctuation_property regexp_in_imperial_aramaic_nonproperty regexp_in_imperial_aramaic_property regexp_in_indic_siyaq_numbers_nonproperty regexp_in_indic_siyaq_numbers_property regexp_in_inscriptional_pahlavi_nonproperty regexp_in_inscriptional_pahlavi_property regexp_in_inscriptional_parthian_nonproperty regexp_in_inscriptional_parthian_property regexp_in_ipa_extensions_nonproperty regexp_in_ipa_extensions_property regexp_in_javanese_nonproperty regexp_in_javanese_property regexp_in_kaithi_nonproperty regexp_in_kaithi_property regexp_in_kana_extended_a_nonproperty regexp_in_kana_extended_a_property regexp_in_kana_supplement_nonproperty regexp_in_kana_supplement_property regexp_in_kanbun_nonproperty regexp_in_kanbun_property regexp_in_kangxi_radicals_nonproperty regexp_in_kangxi_radicals_property regexp_in_kannada_nonproperty regexp_in_kannada_property regexp_in_katakana_nonproperty regexp_in_katakana_phonetic_extensions_nonproperty regexp_in_katakana_phonetic_extensions_property regexp_in_katakana_property regexp_in_kayah_li_nonproperty regexp_in_kayah_li_property regexp_in_kharoshthi_nonproperty regexp_in_kharoshthi_property regexp_in_khitan_small_script_nonproperty regexp_in_khitan_small_script_property regexp_in_khmer_nonproperty regexp_in_khmer_property regexp_in_khmer_symbols_nonproperty regexp_in_khmer_symbols_property regexp_in_khojki_nonproperty regexp_in_khojki_property regexp_in_khudawadi_nonproperty regexp_in_khudawadi_property regexp_in_lao_nonproperty regexp_in_lao_property regexp_in_latin_1_supplement_nonproperty regexp_in_latin_1_supplement_property regexp_in_latin_extended_a_nonproperty regexp_in_latin_extended_a_property regexp_in_latin_extended_additional_nonproperty regexp_in_latin_extended_additional_property regexp_in_latin_extended_b_nonproperty regexp_in_latin_extended_b_property regexp_in_latin_extended_c_nonproperty regexp_in_latin_extended_c_property regexp_in_latin_extended_d_nonproperty regexp_in_latin_extended_d_property regexp_in_latin_extended_e_nonproperty regexp_in_latin_extended_e_property regexp_in_lepcha_nonproperty regexp_in_lepcha_property regexp_in_letterlike_symbols_nonproperty regexp_in_letterlike_symbols_property regexp_in_limbu_nonproperty regexp_in_limbu_property regexp_in_linear_a_nonproperty regexp_in_linear_a_property regexp_in_linear_b_ideograms_nonproperty regexp_in_linear_b_ideograms_property regexp_in_linear_b_syllabary_nonproperty regexp_in_linear_b_syllabary_property regexp_in_lisu_nonproperty regexp_in_lisu_property regexp_in_lisu_supplement_nonproperty regexp_in_lisu_supplement_property regexp_in_low_surrogates_nonproperty regexp_in_low_surrogates_property regexp_in_lycian_nonproperty regexp_in_lycian_property regexp_in_lydian_nonproperty regexp_in_lydian_property regexp_in_mahajani_nonproperty regexp_in_mahajani_property regexp_in_mahjong_tiles_nonproperty regexp_in_mahjong_tiles_property regexp_in_makasar_nonproperty regexp_in_makasar_property regexp_in_malayalam_nonproperty regexp_in_malayalam_property regexp_in_mandaic_nonproperty regexp_in_mandaic_property regexp_in_manichaean_nonproperty regexp_in_manichaean_property regexp_in_marchen_nonproperty regexp_in_marchen_property regexp_in_masaram_gondi_nonproperty regexp_in_masaram_gondi_property regexp_in_mathematical_alphanumeric_symbols_nonproperty regexp_in_mathematical_alphanumeric_symbols_property regexp_in_mathematical_operators_nonproperty regexp_in_mathematical_operators_property regexp_in_mayan_numerals_nonproperty regexp_in_mayan_numerals_property regexp_in_medefaidrin_nonproperty regexp_in_medefaidrin_property regexp_in_meetei_mayek_extensions_nonproperty regexp_in_meetei_mayek_extensions_property regexp_in_meetei_mayek_nonproperty regexp_in_meetei_mayek_property regexp_in_mende_kikakui_nonproperty regexp_in_mende_kikakui_property regexp_in_meroitic_cursive_nonproperty regexp_in_meroitic_cursive_property regexp_in_meroitic_hieroglyphs_nonproperty regexp_in_meroitic_hieroglyphs_property regexp_in_miao_nonproperty regexp_in_miao_property regexp_in_miscellaneous_mathematical_symbols_a_nonproperty regexp_in_miscellaneous_mathematical_symbols_a_property regexp_in_miscellaneous_mathematical_symbols_b_nonproperty regexp_in_miscellaneous_mathematical_symbols_b_property regexp_in_miscellaneous_symbols_and_arrows_nonproperty regexp_in_miscellaneous_symbols_and_arrows_property regexp_in_miscellaneous_symbols_and_pictographs_nonproperty regexp_in_miscellaneous_symbols_and_pictographs_property regexp_in_miscellaneous_symbols_nonproperty regexp_in_miscellaneous_symbols_property regexp_in_miscellaneous_technical_nonproperty regexp_in_miscellaneous_technical_property regexp_in_modi_nonproperty regexp_in_modi_property regexp_in_modifier_tone_letters_nonproperty regexp_in_modifier_tone_letters_property regexp_in_mongolian_nonproperty regexp_in_mongolian_property regexp_in_mongolian_supplement_nonproperty regexp_in_mongolian_supplement_property regexp_in_mro_nonproperty regexp_in_mro_property regexp_in_multani_nonproperty regexp_in_multani_property regexp_in_musical_symbols_nonproperty regexp_in_musical_symbols_property regexp_in_myanmar_extended_a_nonproperty regexp_in_myanmar_extended_a_property regexp_in_myanmar_extended_b_nonproperty regexp_in_myanmar_extended_b_property regexp_in_myanmar_nonproperty regexp_in_myanmar_property regexp_in_nabataean_nonproperty regexp_in_nabataean_property regexp_in_nandinagari_nonproperty regexp_in_nandinagari_property regexp_in_new_tai_lue_nonproperty regexp_in_new_tai_lue_property regexp_in_newa_nonproperty regexp_in_newa_property regexp_in_nko_nonproperty regexp_in_nko_property regexp_in_no_block_nonproperty regexp_in_no_block_property regexp_in_number_forms_nonproperty regexp_in_number_forms_property regexp_in_nushu_nonproperty regexp_in_nushu_property regexp_in_nyiakeng_puachue_hmong_nonproperty regexp_in_nyiakeng_puachue_hmong_property regexp_in_ogham_nonproperty regexp_in_ogham_property regexp_in_ol_chiki_nonproperty regexp_in_ol_chiki_property regexp_in_old_hungarian_nonproperty regexp_in_old_hungarian_property regexp_in_old_italic_nonproperty regexp_in_old_italic_property regexp_in_old_north_arabian_nonproperty regexp_in_old_north_arabian_property regexp_in_old_permic_nonproperty regexp_in_old_permic_property regexp_in_old_persian_nonproperty regexp_in_old_persian_property regexp_in_old_sogdian_nonproperty regexp_in_old_sogdian_property regexp_in_old_south_arabian_nonproperty regexp_in_old_south_arabian_property regexp_in_old_turkic_nonproperty regexp_in_old_turkic_property regexp_in_optical_character_recognition_nonproperty regexp_in_optical_character_recognition_property regexp_in_oriya_nonproperty regexp_in_oriya_property regexp_in_ornamental_dingbats_nonproperty regexp_in_ornamental_dingbats_property regexp_in_osage_nonproperty regexp_in_osage_property regexp_in_osmanya_nonproperty regexp_in_osmanya_property regexp_in_ottoman_siyaq_numbers_nonproperty regexp_in_ottoman_siyaq_numbers_property regexp_in_pahawh_hmong_nonproperty regexp_in_pahawh_hmong_property regexp_in_palmyrene_nonproperty regexp_in_palmyrene_property regexp_in_pau_cin_hau_nonproperty regexp_in_pau_cin_hau_property regexp_in_phags_pa_nonproperty regexp_in_phags_pa_property regexp_in_phaistos_disc_nonproperty regexp_in_phaistos_disc_property regexp_in_phoenician_nonproperty regexp_in_phoenician_property regexp_in_phonetic_extensions_nonproperty regexp_in_phonetic_extensions_property regexp_in_phonetic_extensions_supplement_nonproperty regexp_in_phonetic_extensions_supplement_property regexp_in_playing_cards_nonproperty regexp_in_playing_cards_property regexp_in_private_use_area_nonproperty regexp_in_private_use_area_property regexp_in_psalter_pahlavi_nonproperty regexp_in_psalter_pahlavi_property regexp_in_rejang_nonproperty regexp_in_rejang_property regexp_in_rumi_numeral_symbols_nonproperty regexp_in_rumi_numeral_symbols_property regexp_in_runic_nonproperty regexp_in_runic_property regexp_in_samaritan_nonproperty regexp_in_samaritan_property regexp_in_saurashtra_nonproperty regexp_in_saurashtra_property regexp_in_sharada_nonproperty regexp_in_sharada_property regexp_in_shavian_nonproperty regexp_in_shavian_property regexp_in_shorthand_format_controls_nonproperty regexp_in_shorthand_format_controls_property regexp_in_siddham_nonproperty regexp_in_siddham_property regexp_in_sinhala_archaic_numbers_nonproperty regexp_in_sinhala_archaic_numbers_property regexp_in_sinhala_nonproperty regexp_in_sinhala_property regexp_in_small_form_variants_nonproperty regexp_in_small_form_variants_property regexp_in_small_kana_extension_nonproperty regexp_in_small_kana_extension_property regexp_in_sogdian_nonproperty regexp_in_sogdian_property regexp_in_sora_sompeng_nonproperty regexp_in_sora_sompeng_property regexp_in_soyombo_nonproperty regexp_in_soyombo_property regexp_in_spacing_modifier_letters_nonproperty regexp_in_spacing_modifier_letters_property regexp_in_specials_nonproperty regexp_in_specials_property regexp_in_sundanese_nonproperty regexp_in_sundanese_property regexp_in_sundanese_supplement_nonproperty regexp_in_sundanese_supplement_property regexp_in_superscripts_and_subscripts_nonproperty regexp_in_superscripts_and_subscripts_property regexp_in_supplemental_arrows_a_nonproperty regexp_in_supplemental_arrows_a_property regexp_in_supplemental_arrows_b_nonproperty regexp_in_supplemental_arrows_b_property regexp_in_supplemental_arrows_c_nonproperty regexp_in_supplemental_arrows_c_property regexp_in_supplemental_mathematical_operators_nonproperty regexp_in_supplemental_mathematical_operators_property regexp_in_supplemental_punctuation_nonproperty regexp_in_supplemental_punctuation_property regexp_in_supplemental_symbols_and_pictographs_nonproperty regexp_in_supplemental_symbols_and_pictographs_property regexp_in_supplementary_private_use_area_a_nonproperty regexp_in_supplementary_private_use_area_a_property regexp_in_supplementary_private_use_area_b_nonproperty regexp_in_supplementary_private_use_area_b_property regexp_in_sutton_signwriting_nonproperty regexp_in_sutton_signwriting_property regexp_in_syloti_nagri_nonproperty regexp_in_syloti_nagri_property regexp_in_symbols_and_pictographs_extended_a_nonproperty regexp_in_symbols_and_pictographs_extended_a_property regexp_in_symbols_for_legacy_computing_nonproperty regexp_in_symbols_for_legacy_computing_property regexp_in_syriac_nonproperty regexp_in_syriac_property regexp_in_syriac_supplement_nonproperty regexp_in_syriac_supplement_property regexp_in_tagalog_nonproperty regexp_in_tagalog_property regexp_in_tagbanwa_nonproperty regexp_in_tagbanwa_property regexp_in_tags_nonproperty regexp_in_tags_property regexp_in_tai_le_nonproperty regexp_in_tai_le_property regexp_in_tai_tham_nonproperty regexp_in_tai_tham_property regexp_in_tai_viet_nonproperty regexp_in_tai_viet_property regexp_in_tai_xuan_jing_symbols_nonproperty regexp_in_tai_xuan_jing_symbols_property regexp_in_takri_nonproperty regexp_in_takri_property regexp_in_tamil_nonproperty regexp_in_tamil_property regexp_in_tamil_supplement_nonproperty regexp_in_tamil_supplement_property regexp_in_tangut_components_nonproperty regexp_in_tangut_components_property regexp_in_tangut_nonproperty regexp_in_tangut_property regexp_in_tangut_supplement_nonproperty regexp_in_tangut_supplement_property regexp_in_telugu_nonproperty regexp_in_telugu_property regexp_in_thaana_nonproperty regexp_in_thaana_property regexp_in_thai_nonproperty regexp_in_thai_property regexp_in_tibetan_nonproperty regexp_in_tibetan_property regexp_in_tifinagh_nonproperty regexp_in_tifinagh_property regexp_in_tirhuta_nonproperty regexp_in_tirhuta_property regexp_in_transport_and_map_symbols_nonproperty regexp_in_transport_and_map_symbols_property regexp_in_ugaritic_nonproperty regexp_in_ugaritic_property regexp_in_unified_canadian_aboriginal_syllabics_extended_nonproperty regexp_in_unified_canadian_aboriginal_syllabics_extended_property regexp_in_unified_canadian_aboriginal_syllabics_nonproperty regexp_in_unified_canadian_aboriginal_syllabics_property regexp_in_vai_nonproperty regexp_in_vai_property regexp_in_variation_selectors_nonproperty regexp_in_variation_selectors_property regexp_in_variation_selectors_supplement_nonproperty regexp_in_variation_selectors_supplement_property regexp_in_vedic_extensions_nonproperty regexp_in_vedic_extensions_property regexp_in_vertical_forms_nonproperty regexp_in_vertical_forms_property regexp_in_wancho_nonproperty regexp_in_wancho_property regexp_in_warang_citi_nonproperty regexp_in_warang_citi_property regexp_in_yezidi_nonproperty regexp_in_yezidi_property regexp_in_yi_radicals_nonproperty regexp_in_yi_radicals_property regexp_in_yi_syllables_nonproperty regexp_in_yi_syllables_property regexp_in_yijing_hexagram_symbols_nonproperty regexp_in_yijing_hexagram_symbols_property regexp_in_zanabazar_square_nonproperty regexp_in_zanabazar_square_property regexp_inherited_nonproperty regexp_inherited_property regexp_initial_punctuation_nonproperty regexp_initial_punctuation_property regexp_inscriptional_pahlavi_nonproperty regexp_inscriptional_pahlavi_property regexp_inscriptional_parthian_nonproperty regexp_inscriptional_parthian_property regexp_intersection_set regexp_interval_close_escape regexp_interval_open_escape regexp_javanese_nonproperty regexp_javanese_property regexp_join_control_nonproperty regexp_join_control_property regexp_kaithi_nonproperty regexp_kaithi_property regexp_kannada_nonproperty regexp_kannada_property regexp_katakana_nonproperty regexp_katakana_property regexp_kayah_li_nonproperty regexp_kayah_li_property regexp_kharoshthi_nonproperty regexp_kharoshthi_property regexp_khitan_small_script_nonproperty regexp_khitan_small_script_property regexp_khmer_nonproperty regexp_khmer_property regexp_khojki_nonproperty regexp_khojki_property regexp_khudawadi_nonproperty regexp_khudawadi_property regexp_lao_nonproperty regexp_lao_property regexp_latin_nonproperty regexp_latin_property regexp_lepcha_nonproperty regexp_lepcha_property regexp_letter_nonproperty regexp_letter_number_nonproperty regexp_letter_number_property regexp_letter_property regexp_limbu_nonproperty regexp_limbu_property regexp_line_separator_nonproperty regexp_line_separator_property regexp_linear_a_nonproperty regexp_linear_a_property regexp_linear_b_nonproperty regexp_linear_b_property regexp_linebreak_type regexp_lisu_nonproperty regexp_lisu_property regexp_literal_escape regexp_literal_literal regexp_logical_order_exception_nonproperty regexp_logical_order_exception_property regexp_lookahead_assertion regexp_lookbehind_assertion regexp_lower_nonproperty regexp_lower_posixclass regexp_lower_property regexp_lowercase_letter_nonproperty regexp_lowercase_letter_property regexp_lowercase_nonproperty regexp_lowercase_property regexp_lycian_nonproperty regexp_lycian_property regexp_lydian_nonproperty regexp_lydian_property regexp_mahajani_nonproperty regexp_mahajani_property regexp_makasar_nonproperty regexp_makasar_property regexp_malayalam_nonproperty regexp_malayalam_property regexp_mandaic_nonproperty regexp_mandaic_property regexp_manichaean_nonproperty regexp_manichaean_property regexp_marchen_nonproperty regexp_marchen_property regexp_mark_keep regexp_mark_nonproperty regexp_mark_property regexp_masaram_gondi_nonproperty regexp_masaram_gondi_property regexp_match_start_anchor regexp_math_nonproperty regexp_math_property regexp_math_symbol_nonproperty regexp_math_symbol_property regexp_medefaidrin_nonproperty regexp_medefaidrin_property regexp_meetei_mayek_nonproperty regexp_meetei_mayek_property regexp_mende_kikakui_nonproperty regexp_mende_kikakui_property regexp_meroitic_cursive_nonproperty regexp_meroitic_cursive_property regexp_meroitic_hieroglyphs_nonproperty regexp_meroitic_hieroglyphs_property regexp_meta_sequence_escape regexp_miao_nonproperty regexp_miao_property regexp_modi_nonproperty regexp_modi_property regexp_modifier_letter_nonproperty regexp_modifier_letter_property regexp_modifier_symbol_nonproperty regexp_modifier_symbol_property regexp_mongolian_nonproperty regexp_mongolian_property regexp_mro_nonproperty regexp_mro_property regexp_multani_nonproperty regexp_multani_property regexp_myanmar_nonproperty regexp_myanmar_property regexp_nabataean_nonproperty regexp_nabataean_property regexp_name_call_backref regexp_named_group regexp_nandinagari_nonproperty regexp_nandinagari_property regexp_new_tai_lue_nonproperty regexp_new_tai_lue_property regexp_newa_nonproperty regexp_newa_property regexp_newline_escape regexp_nko_nonproperty regexp_nko_property regexp_nlookahead_assertion regexp_nlookbehind_assertion regexp_noncharacter_code_point_nonproperty regexp_noncharacter_code_point_property regexp_nondigit_type regexp_nonhex_type regexp_nonspace_type regexp_nonspacing_mark_nonproperty regexp_nonspacing_mark_property regexp_nonword_boundary_anchor regexp_nonword_type regexp_number_backref regexp_number_nonproperty regexp_number_property regexp_nushu_nonproperty regexp_nushu_property regexp_nyiakeng_puachue_hmong_nonproperty regexp_nyiakeng_puachue_hmong_property regexp_octal_escape regexp_ogham_nonproperty regexp_ogham_property regexp_ol_chiki_nonproperty regexp_ol_chiki_property regexp_old_hungarian_nonproperty regexp_old_hungarian_property regexp_old_italic_nonproperty regexp_old_italic_property regexp_old_north_arabian_nonproperty regexp_old_north_arabian_property regexp_old_permic_nonproperty regexp_old_permic_property regexp_old_persian_nonproperty regexp_old_persian_property regexp_old_sogdian_nonproperty regexp_old_sogdian_property regexp_old_south_arabian_nonproperty regexp_old_south_arabian_property regexp_old_turkic_nonproperty regexp_old_turkic_property regexp_one_or_more_escape regexp_open_conditional regexp_open_punctuation_nonproperty regexp_open_punctuation_property regexp_options_group regexp_options_switch_group regexp_oriya_nonproperty regexp_oriya_property regexp_osage_nonproperty regexp_osage_property regexp_osmanya_nonproperty regexp_osmanya_property regexp_other_alphabetic_nonproperty regexp_other_alphabetic_property regexp_other_default_ignorable_code_point_nonproperty regexp_other_default_ignorable_code_point_property regexp_other_grapheme_extend_nonproperty regexp_other_grapheme_extend_property regexp_other_id_continue_nonproperty regexp_other_id_continue_property regexp_other_id_start_nonproperty regexp_other_id_start_property regexp_other_letter_nonproperty regexp_other_letter_property regexp_other_lowercase_nonproperty regexp_other_lowercase_property regexp_other_math_nonproperty regexp_other_math_property regexp_other_nonproperty regexp_other_number_nonproperty regexp_other_number_property regexp_other_property regexp_other_punctuation_nonproperty regexp_other_punctuation_property regexp_other_symbol_nonproperty regexp_other_symbol_property regexp_other_uppercase_nonproperty regexp_other_uppercase_property regexp_pahawh_hmong_nonproperty regexp_pahawh_hmong_property regexp_palmyrene_nonproperty regexp_palmyrene_property regexp_paragraph_separator_nonproperty regexp_paragraph_separator_property regexp_passive_group regexp_pattern_syntax_nonproperty regexp_pattern_syntax_property regexp_pattern_white_space_nonproperty regexp_pattern_white_space_property regexp_pau_cin_hau_nonproperty regexp_pau_cin_hau_property regexp_phags_pa_nonproperty regexp_phags_pa_property regexp_phoenician_nonproperty regexp_phoenician_property regexp_possessive_interval regexp_possessive_one_or_more regexp_possessive_zero_or_more regexp_possessive_zero_or_one regexp_prepended_concatenation_mark_nonproperty regexp_prepended_concatenation_mark_property regexp_print_nonposixclass regexp_print_nonproperty regexp_print_posixclass regexp_print_property regexp_private_use_nonproperty regexp_private_use_property regexp_psalter_pahlavi_nonproperty regexp_psalter_pahlavi_property regexp_punct_nonproperty regexp_punct_posixclass regexp_punct_property regexp_punctuation_nonproperty regexp_punctuation_property regexp_quotation_mark_nonproperty regexp_quotation_mark_property regexp_radical_nonproperty regexp_radical_property regexp_range_set regexp_regional_indicator_nonproperty regexp_regional_indicator_property regexp_rejang_nonproperty regexp_rejang_property regexp_reluctant_interval regexp_reluctant_one_or_more regexp_reluctant_zero_or_more regexp_root_expression regexp_runic_nonproperty regexp_runic_property regexp_samaritan_nonproperty regexp_samaritan_property regexp_saurashtra_nonproperty regexp_saurashtra_property regexp_sentence_terminal_nonproperty regexp_sentence_terminal_property regexp_separator_nonproperty regexp_separator_property regexp_sequence_expression regexp_set_close_escape regexp_set_open_escape regexp_sharada_nonproperty regexp_sharada_property regexp_shavian_nonproperty regexp_shavian_property regexp_siddham_nonproperty regexp_siddham_property regexp_signwriting_nonproperty regexp_signwriting_property regexp_sinhala_nonproperty regexp_sinhala_property regexp_soft_dotted_nonproperty regexp_soft_dotted_property regexp_sogdian_nonproperty regexp_sogdian_property regexp_sora_sompeng_nonproperty regexp_sora_sompeng_property regexp_soyombo_nonproperty regexp_soyombo_property regexp_space_nonproperty regexp_space_posixclass regexp_space_property regexp_space_separator_nonproperty regexp_space_separator_property regexp_space_type regexp_spacing_mark_nonproperty regexp_spacing_mark_property regexp_sundanese_nonproperty regexp_sundanese_property regexp_surrogate_nonproperty regexp_surrogate_property regexp_syloti_nagri_nonproperty regexp_syloti_nagri_property regexp_symbol_nonproperty regexp_symbol_property regexp_syriac_nonproperty regexp_syriac_property regexp_tab_escape regexp_tagalog_nonproperty regexp_tagalog_property regexp_tagbanwa_nonproperty regexp_tagbanwa_property regexp_tai_le_nonproperty regexp_tai_le_property regexp_tai_tham_nonproperty regexp_tai_tham_property regexp_tai_viet_nonproperty regexp_tai_viet_property regexp_takri_nonproperty regexp_takri_property regexp_tamil_nonproperty regexp_tamil_property regexp_tangut_nonproperty regexp_tangut_property regexp_telugu_nonproperty regexp_telugu_property regexp_terminal_punctuation_nonproperty regexp_terminal_punctuation_property regexp_thaana_nonproperty regexp_thaana_property regexp_thai_nonproperty regexp_thai_property regexp_tibetan_nonproperty regexp_tibetan_property regexp_tifinagh_nonproperty regexp_tifinagh_property regexp_tirhuta_nonproperty regexp_tirhuta_property regexp_titlecase_letter_nonproperty regexp_titlecase_letter_property regexp_ugaritic_nonproperty regexp_ugaritic_property regexp_unassigned_nonproperty regexp_unassigned_property regexp_unified_ideograph_nonproperty regexp_unified_ideograph_property regexp_unknown_nonproperty regexp_unknown_property regexp_upper_nonproperty regexp_upper_posixclass regexp_upper_property regexp_uppercase_letter_nonproperty regexp_uppercase_letter_property regexp_uppercase_nonproperty regexp_uppercase_property regexp_vai_nonproperty regexp_vai_property regexp_variation_selector_nonproperty regexp_variation_selector_property regexp_vertical_tab_escape regexp_wancho_nonproperty regexp_wancho_property regexp_warang_citi_nonproperty regexp_warang_citi_property regexp_white_space_nonproperty regexp_white_space_property regexp_whitespace_free_space regexp_word_boundary_anchor regexp_word_nonproperty regexp_word_posixclass regexp_word_property regexp_word_type regexp_xdigit_nonproperty regexp_xdigit_posixclass regexp_xdigit_property regexp_xgrapheme_type regexp_xid_continue_nonproperty regexp_xid_continue_property regexp_xid_start_nonproperty regexp_xid_start_property regexp_xposixpunct_nonproperty regexp_xposixpunct_property regexp_yezidi_nonproperty regexp_yezidi_property regexp_yi_nonproperty regexp_yi_property regexp_zanabazar_square_nonproperty regexp_zanabazar_square_property regexp_zero_or_more_escape regexp_zero_or_one_escape ]).freeze # Nodes that are NOT generated by parser but used by mutant / unparser. GENERATED = Set.new(%i[empty]).freeze ALL = Set.new( (Parser::Meta::NODE_TYPES + GENERATED + REGEXP) - BLACKLIST ).freeze end # Types end # AST end # Mutant