[svn] r6329: nemerle/trunk: boot/Nemerle.Compiler.dll
boot/Nemerle.Macros.dll boot/Nemerle.dll boot/ncc.ex...
malekith
svnadmin at nemerle.org
Wed May 24 18:53:54 CEST 2006
Log:
Make InternalType and SystemTypeCache classes.
Author: malekith
Date: Wed May 24 18:53:21 2006
New Revision: 6329
Modified:
nemerle/trunk/boot/Nemerle.Compiler.dll
nemerle/trunk/boot/Nemerle.Macros.dll
nemerle/trunk/boot/Nemerle.dll
nemerle/trunk/boot/ncc.exe
nemerle/trunk/macros/compiler.n
nemerle/trunk/macros/core.n
nemerle/trunk/ncc/external/Codec.n
nemerle/trunk/ncc/external/InternalTypes.n
nemerle/trunk/ncc/external/LibrariesLoader.n
nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
nemerle/trunk/ncc/generation/HierarchyEmitter.n
nemerle/trunk/ncc/generation/ILEmitter.n
nemerle/trunk/ncc/generation/Typer3.n
nemerle/trunk/ncc/generation/Typer4.n
nemerle/trunk/ncc/hierarchy/ClassMembers.n
nemerle/trunk/ncc/hierarchy/CustomAttribute.n
nemerle/trunk/ncc/hierarchy/TypeBuilder.n
nemerle/trunk/ncc/parsing/AST.n
nemerle/trunk/ncc/passes.n
nemerle/trunk/ncc/typing/ConstantFolder.n
nemerle/trunk/ncc/typing/DecisionTreeBuilder.n
nemerle/trunk/ncc/typing/MType.n
nemerle/trunk/ncc/typing/OverloadPossibility.n
nemerle/trunk/ncc/typing/Subst.n
nemerle/trunk/ncc/typing/TypedTree.n
nemerle/trunk/ncc/typing/Typer-CallTyper.n
nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
nemerle/trunk/ncc/typing/Typer-PatternTyper.n
nemerle/trunk/ncc/typing/Typer.n
nemerle/trunk/ncc/typing/Typer2.n
Modified: nemerle/trunk/boot/Nemerle.Compiler.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.Macros.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/Nemerle.dll
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/boot/ncc.exe
==============================================================================
Binary files. No diff available.
Modified: nemerle/trunk/macros/compiler.n
==============================================================================
--- nemerle/trunk/macros/compiler.n (original)
+++ nemerle/trunk/macros/compiler.n Wed May 24 18:53:21 2006
@@ -68,9 +68,38 @@
{
[Nemerle.MacroUsage (Nemerle.MacroPhase.BeforeInheritance,
Nemerle.MacroTargets.Class)]
- macro ManagerAccess (tb : TypeBuilder)
+ macro ManagerAccess (tb : TypeBuilder, params options : list [PExpr])
{
+ match (options) {
+ | [] => {}
tb.Define (<[ decl: public Manager : ManagerClass; ]>);
+ | [expr] =>
+ tb.Define (<[ decl:
+ public Manager : ManagerClass { get { $expr } } ]>);
+ | _ => Message.Error ("invalid option to ManagerAccess")
+ }
+
+ tb.Define (<[ decl:
+ public InternalType : InternalTypeClass
+ {
+ get { Manager.InternalType }
+ }
+ ]>);
+ tb.Define (<[ decl:
+ public SystemTypeCache : SystemTypeClass
+ {
+ get { Manager.SystemTypeCache }
+ }
+ ]>);
+ // prevent N10003 warning
+ tb.Define (<[ decl:
+ private __fake () : void
+ {
+ __fake ();
+ _ = SystemTypeCache;
+ _ = InternalType;
+ }
+ ]>);
}
}
Modified: nemerle/trunk/macros/core.n
==============================================================================
--- nemerle/trunk/macros/core.n (original)
+++ nemerle/trunk/macros/core.n Wed May 24 18:53:21 2006
@@ -420,7 +420,7 @@
typer.DelayMacro (fun (fail_loudly) {
match (tcollection.Type.Hint) {
| Some (MType.Class (tc, args)) =>
- if (tc.SuperType (InternalType.Nemerle_list_tc).IsSome) {
+ if (tc.SuperType (ManagerClass.Instance.InternalType.Nemerle_list_tc).IsSome) {
def arg = List.Head (args);
def definition = build_definition (<[ x ]>);
Some (<[
Modified: nemerle/trunk/ncc/external/Codec.n
==============================================================================
--- nemerle/trunk/ncc/external/Codec.n (original)
+++ nemerle/trunk/ncc/external/Codec.n Wed May 24 18:53:21 2006
@@ -92,7 +92,7 @@
| Term.App (name, args) when name[0] != '.' =>
match (lib.Manager.NameTree.LookupExactType (NString.Split (name, array ['.', '+']))) {
| Some (tc) =>
- if (tc.FullName == "System.Void") InternalType.Void
+ if (tc.FullName == "System.Void") lib.Manager.InternalType.Void
else
MType.Class (tc, List.Map (args, self)).Expand ()
| None =>
Modified: nemerle/trunk/ncc/external/InternalTypes.n
==============================================================================
--- nemerle/trunk/ncc/external/InternalTypes.n (original)
+++ nemerle/trunk/ncc/external/InternalTypes.n Wed May 24 18:53:21 2006
@@ -36,7 +36,7 @@
namespace Nemerle.Compiler {
[ManagerAccess]
-public module SystemTypeCache
+public class SystemTypeClass
{
public mutable Array : System.Type;
public mutable Boolean : System.Type;
@@ -229,9 +229,9 @@
Delegate_Remove = Delegate.GetMethod ("Remove", array [Delegate, Delegate]);
}
- this ()
+ internal this (man : ManagerClass)
{
- Manager = ManagerClass.Instance;
+ Manager = man;
}
}
@@ -260,7 +260,7 @@
{
match (ty.Fix ()) {
| Tuple (types) =>
- def inst = InternalType.GetTupleType (types.Length);
+ def inst = ManagerClass.Instance.InternalType.GetTupleType (types.Length);
MType.Class (inst.tycon, types)
| _ => Util.ice ()
}
@@ -284,7 +284,7 @@
{
def dt = ty.DeclaringType;
def typarms = dt.TyparmsCount;
- typarms > 1 && dt.Equals (InternalType.GetTupleType (typarms).tycon)
+ typarms > 1 && dt.Equals (ManagerClass.Instance.InternalType.GetTupleType (typarms).tycon)
}
internal this (m : ManagerClass, size : int)
@@ -327,7 +327,7 @@
{
match (ty.Fix ().FunReturnTypeAndParms ()) {
| Some ((parms, ret)) =>
- def inst = InternalType.GetFunctionType (parms.Length);
+ def inst = ManagerClass.Instance.InternalType.GetFunctionType (parms.Length);
if (ret.Fix () is MType.Void)
MType.Class (inst.VoidTyCon, parms)
else
@@ -357,7 +357,7 @@
[ManagerAccess]
-public module InternalType
+public class InternalTypeClass
{
public mutable Array_tc : TypeInfo;
public mutable Attribute_tc : TypeInfo;
@@ -482,7 +482,7 @@
}
}
- get_single_method (tc : TypeInfo, name : string) : IMethod
+ static get_single_method (tc : TypeInfo, name : string) : IMethod
{
match (tc.LookupMember (name)) {
| [x] => x :> IMethod
@@ -640,9 +640,9 @@
}
}
- this ()
+ internal this (man : ManagerClass)
{
- Manager = ManagerClass.Instance;
+ Manager = man;
}
}
Modified: nemerle/trunk/ncc/external/LibrariesLoader.n
==============================================================================
--- nemerle/trunk/ncc/external/LibrariesLoader.n (original)
+++ nemerle/trunk/ncc/external/LibrariesLoader.n Wed May 24 18:53:21 2006
@@ -1350,6 +1350,7 @@
}
}
+ [ManagerAccess (library.Manager)]
private class FieldInfo : IField
{
protected handle : SR.FieldInfo;
@@ -1527,6 +1528,7 @@
}
}
+ [ManagerAccess (library.Manager)]
class NetEvent : IEvent
{
protected handle : SR.EventInfo;
@@ -1660,6 +1662,7 @@
}
}
+ [ManagerAccess (library.Manager)]
class NetProperty : IProperty
{
protected handle : SR.PropertyInfo;
@@ -1829,6 +1832,7 @@
}
}
+ [ManagerAccess (library.Manager)]
class MethodInfo : IMethod
{
protected handle : SR.MethodBase;
@@ -2072,7 +2076,7 @@
}
- private static get_variant_options (system_type : System.Type) : list [string]
+ private get_variant_options (system_type : System.Type) : list [string]
{
def str = get_string_attribute (system_type, SystemTypeCache.VariantAttribute, "GetVariantOptions");
NString.Split (str, array [','])
@@ -2088,7 +2092,7 @@
base (lib, h, ns_node);
if (system_type.IsDefined (SystemTypeCache.VariantAttribute, false)) {
- def names = get_variant_options (system_type);
+ def names = lib.get_variant_options (system_type);
def get_opt (name : string) {
match (lib.LibRefManager.NameTree.LookupExactType (NString.Split (name, array ['.', '+']))) {
| Some (tc) => tc
Modified: nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/generation/DecisionTreeCompiler.n (original)
+++ nemerle/trunk/ncc/generation/DecisionTreeCompiler.n Wed May 24 18:53:21 2006
@@ -72,8 +72,7 @@
def (name, value) = assign;
Util.locate (value.loc,
TExpr.Sequence (effect_expr.Type,
- TExpr.Assign (InternalType.Void,
- TExpr.LocalRef (name.Type, name),
+ TExpr.Assign (TExpr.LocalRef (name.Type, name),
value),
acc))
})
@@ -379,7 +378,7 @@
/**
* Emit comparison code with specific literal.
*/
- static emit_compare_with (compare_to : TExpr, literal : Literal) : TExpr
+ emit_compare_with (compare_to : TExpr, literal : Literal) : TExpr
{
def method =
match (literal) {
@@ -450,7 +449,7 @@
}
}
- static ThrowMatchFailure () : TExpr
+ ThrowMatchFailure () : TExpr
{
def ctor = InternalType.NewMatchFailureException_ctor;
TExpr.Throw (Solver.FreshTyVar (),
Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n (original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n Wed May 24 18:53:21 2006
@@ -211,18 +211,18 @@
{
Manager.Solver.Enqueue (fun () {
compile_all_tyinfos (false);
- foreach (x in AttributeCompiler.GetCompiledAssemblyAttributes (assembly_attributes))
+ foreach (x in Manager.AttributeCompiler.GetCompiledAssemblyAttributes (assembly_attributes))
_assembly_builder.SetCustomAttribute (x);
// emit debug attributes
when (Manager.Options.EmitDebug) {
- def attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.DebuggableAttribute, array [SystemTypeCache.DebuggableAttribute_DebuggingModes],
+ def attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.DebuggableAttribute, array [SystemTypeCache.DebuggableAttribute_DebuggingModes],
DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.Default);
_assembly_builder.SetCustomAttribute (attr);
}
// do not require string literals interning
- def attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.CompilationRelaxationsAttribute, 8);
+ def attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.CompilationRelaxationsAttribute, 8);
_assembly_builder.SetCustomAttribute (attr);
// wrap non exception throws
@@ -251,7 +251,7 @@
// if there are some nemerle specific metadata encoded in attributes
when (contains_nemerle_specifics) {
- def attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.Reflection_AssemblyConfigurationAttribute, "ContainsNemerleTypes");
+ def attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.Reflection_AssemblyConfigurationAttribute, "ContainsNemerleTypes");
this._assembly_builder.SetCustomAttribute (attr);
}
@@ -305,7 +305,7 @@
//Message.Debug ("make type builder for " + ti.FullName);
ti.CreateEmitBuilder ();
when (ti.Attributes %&& NemerleAttributes.Macro) {
- def attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.ContainsMacroAttribute, ti.GetTypeBuilder ().FullName);
+ def attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.ContainsMacroAttribute, ti.GetTypeBuilder ().FullName);
_assembly_builder.SetCustomAttribute (attr);
}
}
@@ -503,28 +503,28 @@
/**
* Builds a Nemerle variant attribute
*/
- private static make_nemerle_variant_attribute (decls : list [TypeInfo]) : Emit.CustomAttributeBuilder
+ private make_nemerle_variant_attribute (decls : list [TypeInfo]) : Emit.CustomAttributeBuilder
{
def names = decls.Map (fun (decl) { decl.FullName });
- AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.VariantAttribute, NString.Concat (",", names))
+ Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.VariantAttribute, NString.Concat (",", names))
}
/**
* Builds a Nemerle type alias
*/
- private static make_nemerle_type_alias_attribute (t : MType) : Emit.CustomAttributeBuilder
+ private make_nemerle_type_alias_attribute (t : MType) : Emit.CustomAttributeBuilder
{
- AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.TypeAliasAttribute, TyCodec.EncodeType (t))
+ Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.TypeAliasAttribute, TyCodec.EncodeType (t))
}
/**
* Builds a Nemerle variant option attribute
*/
- private static make_nemerle_variant_option_attribute (is_const : bool) : Emit.CustomAttributeBuilder
+ private make_nemerle_variant_option_attribute (is_const : bool) : Emit.CustomAttributeBuilder
{
- AttributeCompiler.MakeEmittedAttribute (if (is_const)
+ Manager.AttributeCompiler.MakeEmittedAttribute (if (is_const)
SystemTypeCache.ConstantVariantOptionAttribute
else
SystemTypeCache.VariantOptionAttribute)
@@ -878,7 +878,7 @@
if (fun_header.typarms.IsEmpty) {
def parm_types_array = param_types ();
- method_builder = AttributeCompiler.CheckPInvoking (this, tb, attrs, parm_types_array);
+ method_builder = Manager.AttributeCompiler.CheckPInvoking (this, tb, attrs, parm_types_array);
if (method_builder == null)
method_builder = tb.DefineMethod (Name, attrs);
@@ -1069,12 +1069,12 @@
}
when (IsVolatile) {
- def volatile_attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.VolatileModifier);
+ def volatile_attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.VolatileModifier);
field_builder.SetCustomAttribute (volatile_attr)
}
unless (IsMutable) {
- def imm_attr = AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.ImmutableAttribute);
+ def imm_attr = Manager.AttributeCompiler.MakeEmittedAttribute (SystemTypeCache.ImmutableAttribute);
field_builder.SetCustomAttribute (imm_attr)
}
}
Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n (original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n Wed May 24 18:53:21 2006
@@ -45,6 +45,7 @@
/**
* Generates the IL code for a method or a constructor
*/
+ [ManagerAccess]
class ILEmitter
{
private _module_builder : ModuleBuilder;
@@ -95,6 +96,7 @@
internal this (method_builder : Emit.MethodBuilder, type_ : Nemerle.Compiler.TypeBuilder,
fun_header : Typedtree.Fun_header)
{
+ Manager = type_.Manager;
_fun_header = fun_header;
_ilg = method_builder.GetILGenerator ();
@@ -116,6 +118,7 @@
internal this (constructor_builder : Emit.ConstructorBuilder,
type_ : Nemerle.Compiler.TypeBuilder, fun_header : Typedtree.Fun_header)
{
+ Manager = type_.Manager;
_fun_header = fun_header;
_ilg = constructor_builder.GetILGenerator ();
@@ -233,7 +236,7 @@
}
- static is_void (ty : TyVar) : bool
+ is_void (ty : TyVar) : bool
{
ty.Fix () : object == InternalType.Void
}
Modified: nemerle/trunk/ncc/generation/Typer3.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer3.n (original)
+++ nemerle/trunk/ncc/generation/Typer3.n Wed May 24 18:53:21 2006
@@ -212,7 +212,7 @@
#region Utilities
// expects reversed list
- internal static BuildRevSequence (exprs : list [TExpr]) : TExpr
+ internal BuildRevSequence (exprs : list [TExpr]) : TExpr
{
match (exprs) {
| [] =>
@@ -354,7 +354,7 @@
}
- static IsObject (t : TyVar) : bool
+ IsObject (t : TyVar) : bool
{
t.Fix ().Equals (InternalType.Object)
}
@@ -767,7 +767,7 @@
]>
}
- static RewriteTryFinally (clo_type : TypeBuilder, fh : Fun_header) : void
+ RewriteTryFinally (clo_type : TypeBuilder, fh : Fun_header) : void
{
mutable dispose_expr = Typer.VoidLiteral ();
Modified: nemerle/trunk/ncc/generation/Typer4.n
==============================================================================
--- nemerle/trunk/ncc/generation/Typer4.n (original)
+++ nemerle/trunk/ncc/generation/Typer4.n Wed May 24 18:53:21 2006
@@ -467,6 +467,7 @@
static DoWalk (expr : TExpr) : TExpr
{
// Message.Debug ($ "dowalk: $(expr.GetType()) $(expr.Type)");
+ def InternalType = ManagerClass.Instance.InternalType;
def res =
match (expr) {
| FieldMember (obj, fld) when ! expr.IsAssigned =>
Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n (original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n Wed May 24 18:53:21 2006
@@ -36,6 +36,7 @@
namespace Nemerle.Compiler {
+[ManagerAccess (declaring_type.Manager)]
public abstract class MemberBuilder : IMember
{
protected loc : Location;
@@ -53,11 +54,6 @@
internal mutable ty : MType;
protected mutable handle : MemberInfo;
- public Manager : ManagerClass
- {
- get { declaring_type.Manager }
- }
-
[Accessor (flags = WantSetter)]
protected mutable attributes : NemerleAttributes;
Modified: nemerle/trunk/ncc/hierarchy/CustomAttribute.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/CustomAttribute.n (original)
+++ nemerle/trunk/ncc/hierarchy/CustomAttribute.n Wed May 24 18:53:21 2006
@@ -40,8 +40,8 @@
namespace Nemerle.Compiler
{
- // stateless utility module for operating on attibutes
- module AttributeCompiler
+ [ManagerAccess]
+ class AttributeCompilerClass
{
compile_expr (env : GlobalEnv, ti : TypeBuilder, allow_rec : bool,
expr : PT.PExpr) : object * MType
@@ -299,6 +299,7 @@
internal MakeEmittedAttribute (attr_type : System.Type) : SR.Emit.CustomAttributeBuilder
{
+ _ = this; // shut up!
def constructor_info = attr_type.GetConstructor (System.Type.EmptyTypes);
SR.Emit.CustomAttributeBuilder (constructor_info, array [])
}
@@ -310,6 +311,7 @@
internal MakeEmittedAttribute (attr_type : System.Type, param_types : array [System.Type], value : object) : SR.Emit.CustomAttributeBuilder
{
+ _ = this; // shut up!
def constructor_info = attr_type.GetConstructor (param_types);
assert (constructor_info != null);
def constructor_params = array [value];
@@ -424,6 +426,11 @@
}
loop (meth.GetModifiers ().GetCustomAttributes ())
}
+
+ internal this (man : ManagerClass)
+ {
+ Manager = man;
+ }
}
public partial class TypesManager
@@ -475,7 +482,7 @@
foreach ((env, attr) in assembly_attributes) {
/* store resolved attribute */
- def (tc, parms) = AttributeCompiler.CheckAttribute (env, attr);
+ def (tc, parms) = Manager.AttributeCompiler.CheckAttribute (env, attr);
def take_string (pars) {
| [ <[ $(x : string) ]> ] => x
@@ -543,7 +550,7 @@
{
foreach (expr in custom_attrs) {
try {
- def error = adder (AttributeCompiler.CompileAttribute (ti.GlobalEnv, ti, expr));
+ def error = adder (ti.Manager.AttributeCompiler.CompileAttribute (ti.GlobalEnv, ti, expr));
when (error != null)
Message.Error ($"custom attribute $expr is not valid on " + error);
} catch {
@@ -573,7 +580,7 @@
0,
$(concatenated : string))
]>;
- def error = adder (AttributeCompiler.CompileAttribute (ti.GlobalEnv, ti, serialized));
+ def error = adder (ti.Manager.AttributeCompiler.CompileAttribute (ti.GlobalEnv, ti, serialized));
when (error != null)
Message.Error ($"macro attribute $name is not valid on " + error);
}
Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n (original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n Wed May 24 18:53:21 2006
@@ -528,7 +528,7 @@
// find our attribute
foreach (expr in GetModifiers ().custom_attrs)
- match (AttributeCompiler.ResolveAttribute (this.GlobalEnv, expr)) {
+ match (Manager.AttributeCompiler.ResolveAttribute (this.GlobalEnv, expr)) {
| Some ((t, _)) =>
when (looking_for.Equals (t))
result = Some (expr)
Modified: nemerle/trunk/ncc/parsing/AST.n
==============================================================================
--- nemerle/trunk/ncc/parsing/AST.n (original)
+++ nemerle/trunk/ncc/parsing/AST.n Wed May 24 18:53:21 2006
@@ -367,6 +367,7 @@
public GetInternalType () : MType
{
+ def InternalType = ManagerClass.Instance.InternalType;
match (this) {
| Literal.Void => InternalType.Void
| Literal.Null => InternalType.Object
@@ -385,6 +386,7 @@
public WithType (t : MType) : option [Literal]
{
+ def InternalType = t.Manager.InternalType;
match (this) {
| Literal.Void => None ()
| Literal.Null when t.CanBeNull
@@ -411,6 +413,7 @@
public WithProperType () : Literal
{
+ def InternalType = ManagerClass.Instance.InternalType;
match (this) {
| Literal.Integer (0, true, _) => Literal.Integer (0, false, InternalType.Int32)
| Literal.Integer (val, is_neg, _) =>
@@ -436,6 +439,7 @@
public AsObject () : object
{
+ def InternalType = ManagerClass.Instance.InternalType;
match (this) {
| Literal.Void => assert (false)
| Literal.Null => null
@@ -571,6 +575,7 @@
public static FromInt (x : int) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
if (x == int.MinValue)
Literal.Integer (0x80000000UL, true, InternalType.Int32)
else
@@ -579,6 +584,7 @@
public static FromSByte (x : sbyte) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
if (x == sbyte.MinValue)
Literal.Integer (0x80UL, true, InternalType.SByte)
else
@@ -587,11 +593,13 @@
public static FromByte (x : byte) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
Literal.Integer (x, false, InternalType.Byte)
}
public static FromShort (x : short) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
if (x == short.MinValue)
Literal.Integer (0x8000UL, true, InternalType.Int16)
else
@@ -600,16 +608,19 @@
public static FromUShort (x : ushort) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
Literal.Integer (x, false, InternalType.UInt16)
}
public static FromUInt (x : uint) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
Literal.Integer (x, false, InternalType.UInt32)
}
public static FromLong (x : long) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
if (x == long.MinValue)
Literal.Integer (0x8000000000000000UL, true, InternalType.Int64)
else
@@ -618,6 +629,7 @@
public static FromULong (x : ulong) : Literal.Integer
{
+ def InternalType = ManagerClass.Instance.InternalType;
Literal.Integer (x, false, InternalType.UInt64)
}
Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n (original)
+++ nemerle/trunk/ncc/passes.n Wed May 24 18:53:21 2006
@@ -31,15 +31,13 @@
namespace Nemerle.Compiler
{
- public class InternalTypeClass {}
- public class SystemTypeClass {}
-
public class ManagerClass
{
public static mutable Instance : ManagerClass;
public SystemTypeCache : SystemTypeClass;
public InternalType : InternalTypeClass;
+ internal AttributeCompiler : AttributeCompilerClass;
internal mutable Solver : Solver;
public mutable Hierarchy : TypesManager;
@@ -65,6 +63,9 @@
def scanner = ScanTypeHierarchy (this);
ScanningPipeline = scanner.ProcessDeclaration;
this.Options = options;
+ InternalType = InternalTypeClass (this);
+ SystemTypeCache = SystemTypeClass (this);
+ AttributeCompiler = AttributeCompilerClass (this);
}
Modified: nemerle/trunk/ncc/typing/ConstantFolder.n
==============================================================================
--- nemerle/trunk/ncc/typing/ConstantFolder.n (original)
+++ nemerle/trunk/ncc/typing/ConstantFolder.n Wed May 24 18:53:21 2006
@@ -36,6 +36,7 @@
namespace Nemerle.Compiler
{
// this module is stateless
+ [ManagerAccess (ManagerClass.Instance)]
public module ConstantFolder
{
internal is_known_operator (name : string) : bool
Modified: nemerle/trunk/ncc/typing/DecisionTreeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/typing/DecisionTreeBuilder.n (original)
+++ nemerle/trunk/ncc/typing/DecisionTreeBuilder.n Wed May 24 18:53:21 2006
@@ -78,6 +78,7 @@
namespace Nemerle.Compiler
{
+ [ManagerAccess]
class DecisionTreeBuilder
{
@@ -131,6 +132,7 @@
*/
static FindValueExcept (cons : list [Con], throw_ignore = false) : string
{
+ def InternalType = ManagerClass.Instance.InternalType;
match (cons) {
| [] => "_"
| Lit (Literal.Bool (true)) :: _ => "false"
@@ -661,7 +663,7 @@
// change tuple to record
| Pattern.Tuple (pats) =>
mutable id = 0;
- def tt = InternalType.GetTupleType (pats.Length);
+ def tt = ManagerClass.Instance.InternalType.GetTupleType (pats.Length);
def pats' =
pats.Map (fun (pat) { ++id; (tt.GetField (id), pat) });
def pat =
@@ -836,6 +838,7 @@
foreach (case in cases)
foreach ((pat, guard, _) in case.patterns) {
+ Manager = pat.Type.Manager;
def no_guard = guard is TExpr.Literal (Literal.Bool (true));
patterns = (pat, ! no_guard, no) :: patterns;
++no;
Modified: nemerle/trunk/ncc/typing/MType.n
==============================================================================
--- nemerle/trunk/ncc/typing/MType.n (original)
+++ nemerle/trunk/ncc/typing/MType.n Wed May 24 18:53:21 2006
@@ -573,7 +573,7 @@
def from =
match (parms) {
| [x] => x
- | [] => InternalType.Void
+ | [] => ManagerClass.Instance.InternalType.Void
| lst => MType.Tuple (lst)
}
Modified: nemerle/trunk/ncc/typing/OverloadPossibility.n
==============================================================================
--- nemerle/trunk/ncc/typing/OverloadPossibility.n (original)
+++ nemerle/trunk/ncc/typing/OverloadPossibility.n Wed May 24 18:53:21 2006
@@ -34,6 +34,7 @@
{
/** Represents a single possibility in the overloading resulution process.
It is used in the TExpr.Overloaded node. */
+ [ManagerAccess (solver.Manager)]
public class OverloadPossibility : Located
{
/** Tell if this overload is still possible in the current solver. */
@@ -232,11 +233,6 @@
mutable formal_types : array [TyVar];
mutable did_mambo_jumbo : bool;
- public Manager : ManagerClass
- {
- get { solver.Manager }
- }
-
public ResetOverloadSelectionStuff () : void
{
permutation_array = null;
Modified: nemerle/trunk/ncc/typing/Subst.n
==============================================================================
--- nemerle/trunk/ncc/typing/Subst.n (original)
+++ nemerle/trunk/ncc/typing/Subst.n Wed May 24 18:53:21 2006
@@ -206,7 +206,7 @@
});
List.Iter2 (vars, vars', fun (v : StaticTyVar, tv : TyVar) {
- when (!v.LowerBound.Equals (InternalType.Object)) {
+ when (!v.LowerBound.Equals (ManagerClass.Instance.InternalType.Object)) {
def ok = tv.Require (res.Apply (v.LowerBound));
Util.cassert (was_error || ok, $ "req fail, $tv $(res.Apply (v.LowerBound))");
}
Modified: nemerle/trunk/ncc/typing/TypedTree.n
==============================================================================
--- nemerle/trunk/ncc/typing/TypedTree.n (original)
+++ nemerle/trunk/ncc/typing/TypedTree.n Wed May 24 18:53:21 2006
@@ -634,6 +634,7 @@
{
get {
when (ty == null) {
+ def InternalType = ManagerClass.Instance.InternalType;
match (this) {
| Throw
| Goto
@@ -1002,6 +1003,7 @@
public static BoolLiteral (val : bool) : TExpr
{
when (true_literal == null) {
+ def InternalType = ManagerClass.Instance.InternalType;
false_literal =
TExpr.Literal (InternalType.Boolean,
Nemerle.Compiler.Literal.Bool (false));
Modified: nemerle/trunk/ncc/typing/Typer-CallTyper.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-CallTyper.n (original)
+++ nemerle/trunk/ncc/typing/Typer-CallTyper.n Wed May 24 18:53:21 2006
@@ -40,6 +40,7 @@
{
public partial class Typer
{
+ [ManagerAccess (typer.Manager)]
class CallTyper {
function_called : TExpr;
mutable call_parms : list [Parm];
Modified: nemerle/trunk/ncc/typing/Typer-DelayedTyping.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-DelayedTyping.n (original)
+++ nemerle/trunk/ncc/typing/Typer-DelayedTyping.n Wed May 24 18:53:21 2006
@@ -73,6 +73,7 @@
// TODO: object model seems to fit better here, upgrade most kinds to use DelayedAction
+ [ManagerAccess (typer.Manager)]
public class DelayedTyping : Located, Nemerle.IComparable [DelayedTyping]
{
id : int;
@@ -100,12 +101,6 @@
}
- public Manager : ManagerClass
- {
- get { typer.Manager }
- }
-
-
public CompareTo (o : DelayedTyping) : int
{
id - o.id
Modified: nemerle/trunk/ncc/typing/Typer-PatternTyper.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer-PatternTyper.n (original)
+++ nemerle/trunk/ncc/typing/Typer-PatternTyper.n Wed May 24 18:53:21 2006
@@ -150,6 +150,7 @@
public partial class Typer
{
+ [ManagerAccess (typer.Manager)]
class PatternTyper
{
typer : Typer;
Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n (original)
+++ nemerle/trunk/ncc/typing/Typer.n Wed May 24 18:53:21 2006
@@ -690,6 +690,7 @@
static internal VoidLiteral () : TExpr
{
+ def InternalType = ManagerClass.Instance.InternalType;
TExpr.Literal (InternalType.Void, Literal.Void ())
}
@@ -819,6 +820,7 @@
static internal LiteralConversionPossible (lit : Literal, target : MType) : bool
{
+ def InternalType = ManagerClass.Instance.InternalType;
match (lit) {
| Literal.Integer (res, is_negative, _) =>
if (target.Equals (InternalType.UInt64))
@@ -1834,6 +1836,7 @@
static internal TypeOfLiteral (l : Literal) : TyVar
{
+ def InternalType = ManagerClass.Instance.InternalType;
def mono_type =
match (l) {
| Literal.Null => null
Modified: nemerle/trunk/ncc/typing/Typer2.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer2.n (original)
+++ nemerle/trunk/ncc/typing/Typer2.n Wed May 24 18:53:21 2006
@@ -548,7 +548,7 @@
}
- static VoidIfNull (expr : TExpr) : TExpr
+ VoidIfNull (expr : TExpr) : TExpr
{
if (expr == null)
TExpr.Literal (InternalType.Void, Literal.Void ())
More information about the svn
mailing list