[m-rev.] for review: submodules in the same assembly

Peter Ross peter.ross at miscrit.be
Fri Aug 10 02:21:34 AEST 2001


On Thu, Aug 09, 2001 at 11:19:55PM +1000, Fergus Henderson wrote:
> On 09-Aug-2001, Peter Ross <peter.ross at miscrit.be> wrote:
> > Place sub-modules in the same assembly as their parent on the IL
> > backend.
> > 
> > This allowes the user to decide how their application should be
> > packaged.  If the user wishes their application to be deployed as one
> > assembly then they should use sub modules.
> 
> It would be nice to document that somewhere,
> e.g. README.DotNet, the user guide, and/or the web page.
> 
> > +++ compiler/ilds.m	9 Aug 2001 12:11:08 -0000
> > @@ -63,7 +63,19 @@
> > -:- type assembly_name == ilds__id. 
> > +	% If we are referencing a sub-module, then we need to record two
> > +	% names.  One is the sub-module name, which is used for
> > +	% references from the parent module, and the other is the
> > +	% assembly name for when the name is referenced from anywhere
> > +	% else.
> > +:- type assembly_name
> > +	--->	module(
> > +			il_module_name		:: ilds__id,
> > +			containing_asm_name	:: ilds__id
> 
> Please spell that out in full, i.e. "containing_assembly_name".
> 
Done.

> > Index: compiler/mlds_to_il.m
> > -		ThisAssembly = [assembly(AssemblyName)],
> > +			% If the package name is qualified then the
> > +			% we have a sub-module which shouldn't be placed
> > +			% in it's own module.
> > +		( PackageName = unqualified(_) ->
> > +			ThisAssembly = [assembly(AssemblyName)]
> > +		;
> > +			ThisAssembly = []
> > +		),
> 
> s/it's/its/
> 
> Did you mean to say "in its own _assembly_"?
> 

Yes, changed.

> > @@ -959,11 +960,11 @@
> >  		)},
> >  		{ RenameNode = (func(N) = list__map(RenameRets, N)) },
> >  
> > -		{ ExceptionClassName = structured_name("mscorlib",
> > +		{ ExceptionClassName = structured_name(assembly("mscorlib"),
> >  				["System", "Exception"]) },
> >  
> >  		{ ConsoleWriteName = class_member_name(structured_name(
> > -				"mscorlib", ["System", "Console"]),
> > +				assembly("mscorlib"), ["System", "Console"]),
> >  				id("Write")) },
> 
> This code should use il_system_assembly_name
> rather than hard-coding "mscorlib".
> 
Done.

> > Index: compiler/modules.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/compiler/modules.m,v
> > retrieving revision 1.189
> > diff -u -r1.189 modules.m
> > --- compiler/modules.m	7 Aug 2001 16:44:59 -0000	1.189
> > +++ compiler/modules.m	9 Aug 2001 12:11:13 -0000
> > @@ -2051,6 +2051,18 @@
> >  
> >  		globals__io_get_target(Target),
> >  		globals__io_get_globals(Globals),
> > +
> > +		{ SubModules = submodules(ModuleName, AllDeps) },
> > +		( { Target = il, SubModules \= [] } ->
> > +			module_name_to_file_name(ModuleName, ".dll", no,
> > +					DllFileName),
> > +			io__write_strings(DepStream, [DllFileName, " : "]),
> > +			write_dll_dependencies_list(SubModules, "", DepStream),
> > +			io__nl(DepStream)
> > +		;
> > +			[]
> > +		),
> > +		
> 
> Copy the comment from the log message.
> 
Done.

> > +:- func submodules(module_name, list(module_name)) = list(module_name).
> > +
> > +submodules(Module, Modules0) = Modules :-
> > +	( Module = unqualified(Str), \+ mercury_std_library_module(Str) ->
> > +		P = (pred(M::in) is semidet :-
> > +			Str = outermost_qualifier(M),
> > +			M \= Module
> > +		),
> > +		list__filter(P, Modules0, Modules)
> > +	;
> > +		Modules = []
> >  	).
> 
> A comment or two here would help.
> 

The following comment has been added

	% submodules(Module, Imports)
	% returns the list of submodules from Imports which are
	% sub-modules of Module, if Module is a top level module and not
	% in the std library.  Otherwise it returns the empty list.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list