PreviousUpNext

15.4.631  src/lib/compiler/front/typer/basics/typer-control.pkg

## typer-control.pkg
## (C) 2001 Lucent Technologies, Bell Labs

# Compiled by:
#     src/lib/compiler/front/typer/typer.sublib

# Flags controlling the elaborator.


stipulate
    package bc  =  basic_control;                                       # basic_control                 is from   src/lib/compiler/front/basics/main/basic-control.pkg
    package ci  =  global_control_index;                                # global_control_index          is from   src/lib/global-controls/global-control-index.pkg
    package cj  =  global_control_junk;                                 # global_control_junk                   is from   src/lib/global-controls/global-control-junk.pkg
    package ctl =  global_control;                                      # global_control                is from   src/lib/global-controls/global-control.pkg
herein

    package typer_control {
        #
        stipulate

            menu_slot = [10, 10, 7];
            clear = 2;
            obscure = 6;
            prefix = "typechecker";

            registry = ci::make { help => "typechecker flags" };
                                                                                    my _ =
            bc::note_subindex (prefix, registry, menu_slot);

            convert_boolean =  cj::cvt::bool;

            next_menu_slot = REF 0;

            fun make obscurity (name, help, d)
                =
                {   r           =  REF d;
                    menu_slot   = *next_menu_slot;

                    control
                        =
                        ctl::make_control
                          {
                            name,
                            menu_slot => [menu_slot],
                            obscurity,
                            help => help,
                            control => r
                          };

                    next_menu_slot :=  menu_slot + 1;

                    ci::note_control
                        registry
                        { control         =>  ctl::make_string_control convert_boolean control,
                          dictionary_name =>  THE (cj::dn::to_upper "ELAB_"  name)
                        };
                    r;
                };

            c_new =  make clear;
            o_new =  make obscure;

        herein

            typecheck_type_debugging                    =  o_new ("typecheck_type_debugging",                   "?", FALSE);
            type_api_debugging                          =  o_new ("type_api_debugging",                         "?", FALSE);
            generics_expansion_junk_debugging           =  o_new ("generics_expansion_junk_debugging",          "?", FALSE);

            api_match_debugging                         =  o_new ("api_match_debugging",                        "?", FALSE);
            type_package_language_debugging             =  o_new ("type_package_language_debugging",            "?", FALSE);
            typer_junk_debugging                        =  o_new ("typer_junk_debugging",                       "?", FALSE);
            type_core_language_declaration_g_debugging  =  o_new ("type_core_language_declaration_g_debugging", "?", FALSE);
            generalize_mutually_recursive_functions     =  o_new ("generalize_mutually_recursive_functions",    "?", FALSE);
            expand_oop_syntax_debugging                 =  o_new ("expand_oop_syntax_debugging",                "?", FALSE);

            unify_typoids_debugging                     =  o_new ("unify_typoids_debugging",                    "?", FALSE);
            internals                                   =  o_new ("internals",                                  "?", FALSE);

            mark_deep_syntax_tree                       =  o_new ("mark_deep_syntax_tree",                      "?", TRUE);
            boxedconstconreps                           =  o_new ("boxedconstreps",                             "?", FALSE);


            mult_def_warn                               = c_new ("mult_def_warn",                               "?", FALSE);
            share_def_error                             = c_new ("share_def_error",                             "?", TRUE);

            value_restriction_local_warn                = c_new ("value_restriction_local_warn",                "?", FALSE);
            value_restriction_top_warn                  = c_new ("value_restriction_top_warn",                  "?", FALSE);    # Too many false positives to default to TRUE.

            macro_expand_sigs                           = o_new ("macro_expand_sigs",                           "?", TRUE);

        end;
    };
end;


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext