PreviousUpNext

15.4.44  src/app/makelib/compilable/get-toplevel-module-dependencies-summary-exports.pkg

## get-toplevel-module-dependencies-summary-exports.pkg

# Compiled by:
#     src/app/makelib/makelib.sublib



# Get the toplevel exports from a module_dependencies_summary.



stipulate
    package mds =  module_dependencies_summary;                                                                         # module_dependencies_summary                           is from   src/app/makelib/compilable/module-dependencies-summary.pkg
    package sys =  symbol_set;                                                                                          # symbol_set                                            is from   src/app/makelib/stuff/symbol-set.pkg
herein

    api Get_Toplevel_Module_Dependencies_Summary_Exports {
        #
        get_toplevel_module_dependencies_summary_exports
            :
            mds::Declaration -> sys::Set;
    };

end;


stipulate
    package mds =  module_dependencies_summary;                                                                         # module_dependencies_summary                           is from   src/app/makelib/compilable/module-dependencies-summary.pkg
    package sys =  symbol_set;                                                                                          # symbol_set                                            is from   src/app/makelib/stuff/symbol-set.pkg
herein

    package get_toplevel_module_dependencies_summary_exports
    :       Get_Toplevel_Module_Dependencies_Summary_Exports                                                            # Get_Toplevel_Module_Dependencies_Summary_Exports      is from   src/app/makelib/compilable/get-toplevel-module-dependencies-summary-exports.pkg
    {
        fun get_toplevel_module_dependencies_summary_exports  d
            =
            e (d, sys::empty)
            where 
                fun e (mds::BIND (s, _),  a) =>   sys::add (a, s);
                    e (mds::LOCAL (l, b), a) =>   e (b, a);
                    e (mds::PAR l,        a) =>   fold_forward e a l;
                    e (mds::SEQ l,        a) =>   fold_forward e a l;
                    e (mds::OPEN _,       a) =>   a;                    #  Cannot happen.
                    e (mds::REF _,        a) =>   a;
                end;
            end;
    };
end;


## Copyright (C) 1999 Lucent Technologies, Bell Laboratories
## Author: Matthias Blume (blume@cs.princeton.edu)
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext