using System.Collections;
using System.Reflection;
using System.Security;
+using System.Globalization;
namespace Mono.ILASM {
private string locale;
private byte [] hash;
private DeclSecurity decl_sec;
+ private AssemblyName asmb_name;
public ExternAssembly (string name, AssemblyName asmb_name) : base (name)
{
this.name = name;
+ this.asmb_name = asmb_name;
major = minor = build = revision = -1;
}
}
}
+ public AssemblyName AssemblyName {
+ get { return asmb_name; }
+ }
+
+ public DeclSecurity DeclSecurity {
+ get {
+ if (decl_sec == null)
+ decl_sec = new DeclSecurity ();
+ return decl_sec;
+ }
+ }
+
public override void Resolve (CodeGen code_gen)
{
if (is_resolved)
return AssemblyRef;
}
- public void AddPermissionSet (PEAPI.SecurityAction sec_action, PermissionSet ps)
- {
- if (decl_sec == null)
- decl_sec = new DeclSecurity ();
-
- decl_sec.AddPermissionSet (sec_action, ps);
- }
-
- public void AddPermission (PEAPI.SecurityAction sec_action, IPermission iper)
- {
- if (decl_sec == null)
- decl_sec = new DeclSecurity ();
-
- decl_sec.AddPermission (sec_action, iper);
- }
-
public void SetVersion (int major, int minor, int build, int revision)
{
this.major = major;
this.minor = minor;
this.build = build;
this.revision = revision;
+ asmb_name.Version = new Version (major, minor, build, revision);
}
public void SetPublicKey (byte [] public_key)
{
this.public_key = public_key;
+ asmb_name.SetPublicKey (public_key);
}
public void SetPublicKeyToken (byte [] public_key_token)
{
this.public_key_token = public_key_token;
+ asmb_name.SetPublicKey (public_key);
}
public void SetLocale (string locale)
{
this.locale = locale;
+ //FIXME: is this correct?
+ asmb_name.CultureInfo = new CultureInfo (locale);
}
public void SetHash (byte [] hash)
public ExternTypeRef GetTypeRef (string asmb_name, string full_name, bool is_valuetype)
{
ExternAssembly ext_asmb = null;
- if (assembly_table == null && (asmb_name == "mscorlib" || asmb_name == "corlib"))
+ if (assembly_table == null && (asmb_name == "mscorlib" || asmb_name == "corlib")) {
/* AddCorlib if mscorlib is being referenced but
we haven't encountered a ".assembly 'name'" as yet. */
+ Report.Warning (String.Format ("Reference to undeclared extern assembly '{0}', adding.", asmb_name));
AddCorlib ();
+ }
if (assembly_table != null)
ext_asmb = assembly_table[asmb_name] as ExternAssembly;
System.Reflection.AssemblyName asmname = new System.Reflection.AssemblyName ();
asmname.Name = asmb_name;
- Console.Error.WriteLine ("Warning -- Reference to undeclared extern assembly '{0}', adding.", asmb_name);
+ Report.Warning (String.Format ("Reference to undeclared extern assembly '{0}', adding.", asmb_name));
ext_asmb = AddAssembly (asmb_name, asmname);
}
mod = module_table [mod_name] as ExternModule;
if (mod == null)
- throw new Exception (String.Format ("Module {0} not defined.", mod_name));
+ Report.Error ("Module " + mod_name + " not defined.");
return mod.GetTypeRef (full_name, is_valuetype);
}