[svn] r7302: nemerle/trunk: macros/Util.n ncc/completion/CodeCompletionEngine.n ncc/hierarchy/ClassMembers...

VladD2 svnadmin at nemerle.org
Sat Jan 20 14:11:57 CET 2007


Log:
1. Move IntelliSense related code into Nemerle.VSIP\Nemerle.VsIntegration.Tests project.
2. Convert some fields to properties.
3. Rename instantiateComponentsFactory() to CreateComponentsFactory.

Author: VladD2
Date: Sat Jan 20 14:11:54 2007
New Revision: 7302

Modified:
   nemerle/trunk/macros/Util.n
   nemerle/trunk/ncc/completion/CodeCompletionEngine.n
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/misc/ComponentsFactory.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/parsing/ParseTree.n
   nemerle/trunk/ncc/passes.n

Modified: nemerle/trunk/macros/Util.n
==============================================================================
--- nemerle/trunk/macros/Util.n	(original)
+++ nemerle/trunk/macros/Util.n	Sat Jan 20 14:11:54 2007
@@ -145,7 +145,7 @@
           }
         ]>;
 
-    prop.Env = storage_field.Env;
+    prop.SetEnv (storage_field.Env);
 
     when (want_internal) {
       prop.Attributes &= ~NemerleAttributes.Public;

Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n	(original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n	Sat Jan 20 14:11:54 2007
@@ -33,8 +33,6 @@
  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#define DEBUG
- 
 using System;
 using Nemerle.Assertions;
 using Nemerle.Compiler;
@@ -264,138 +262,4 @@
       | _                        => name
     }
   }
-  
-  public class CompletionMethodBuilder : MethodBuilder {
-    public this (par : TypeBuilder, functionAst : ClassMember.Function)    {
-      this (par, functionAst, false);
-    }
-    public this (par : TypeBuilder, functionAst : ClassMember.Function, is_property : bool) {
-      base (par, functionAst, is_property);
-      _bodyTokens = functionAst.Tokens;
-    }
-    
-    public override EnsureCompiled() : void
-    {
-      unless (BodyLocation.FileIndex > 0 && this.Attributes %&& NemerleAttributes.Abstract)
-        _ = BodyTyped;
-    }
-  
-    mutable _bodyMessages : SCG.List[CompilerMessage];
-    public override BodyMessages : SCG.List[CompilerMessage]
-    {
-      get
-      {
-        Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-        when (_bodyMessages == null)
-          _bodyMessages = SCG.List();
-  
-        _bodyMessages
-      }
-    }
-  
-    public override ResetCodeCache () : void
-    {
-      when (_bodyMessages != null)
-        _bodyMessages.Clear();
-  
-      _bodyTokens     = null;
-      _bodyParsed     = null;
-      _bodyTyped      = null;
-      fun_header.body = null;
-    }
-  
-    mutable _bodyTokens : Token.BracesGroup;
-  
-    //mutable _indent : string = "";
-  
-    /// The method body tokens. 
-    /// Note: For call this method you must implement method 
-    /// PreParseMethodBody in a subtype.
-    public override BodyTokens : Token.BracesGroup
-    {
-      get
-      {
-        //Trace.WriteLine($"$_indent>>>> ##### BodyTokens ($Name)!");
-        Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-        Trace.Assert(Manager.IsIntelliSenseMode);
-        when (_bodyTokens == null)
-        {
-          //def indent = _indent; _indent += "  ";
-          Manager.SetCompiletMessages (BodyMessages);
-          _bodyTokens = Manager.PreParseMethodBody (this);
-          //_indent = indent;
-        }
-  
-        //Trace.WriteLine($"$_indent<<<< ##### BodyTokens ($Name)!");
-        _bodyTokens
-      }
-  
-      set { ResetCodeCache(); _bodyTokens = value; }
-    }
-  
-    mutable _bodyParsed : PExpr;
-  
-    /// The method body parsed expressions. 
-    public override BodyParsed : PExpr
-    {
-      get
-      {
-        //Trace.WriteLine($"$_indent>>>> ##### BodyParsed ($Name)!");
-        Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-        Trace.Assert(Manager.IsIntelliSenseMode);
-        when (_bodyParsed == null)
-        {
-          //def indent = _indent; _indent += "  ";
-          Manager.SetCompiletMessages (BodyMessages);
-          _bodyParsed = MainParser.ParseFunctionBody (Env, Ast.header, BodyTokens);
-          fun_header.body = FunBody.Parsed (_bodyParsed);
-          //_indent = indent;
-        }
-  
-        //Trace.WriteLine($"$_indent<<<< ##### BodyParsed ($Name)!");
-        _bodyParsed
-      }
-    }
-  
-    public override IsBodyCompilable : bool
-    {
-      get
-      {
-        def res = HasAbstractBody || BodyLocation.IsGenerated 
-          || BodyLocation.FileIndex <= 0
-          || Attributes %&& NemerleAttributes.SpecialName;
-        !res
-      }
-    }
-  
-    mutable _bodyTyped : TExpr;
-  
-    /// The method body parsed expressions. 
-    public override BodyTyped : TExpr
-    {
-      get
-      {
-        Manager.CheckSolver();
-        //Trace.WriteLine($"$_indent>>>> ##### BodyTyped ($Name)!");
-        Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-        Trace.Assert(Manager.IsIntelliSenseMode);
-        when (_bodyTyped == null)
-        {
-          //def indent = _indent; _indent += "  ";
-          Manager.SetCompiletMessages (BodyMessages);
-          try
-          {
-            _ = BodyParsed; // Use side affect
-            RunBodyTyper();
-            _bodyTyped = (fun_header.body :> FunBody.Typed).expr;
-          }
-          finally { Manager.SetCompiletMessages (null); }
-          //_indent = indent;
-        }
-  
-        //Trace.WriteLine($"$_indent<<<< ##### BodyTyped ($Name)!");
-        _bodyTyped
-      }
-    }
-  }
 }

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Sat Jan 20 14:11:54 2007
@@ -757,9 +757,9 @@
   [Accessor]
   is_var_args : bool;
 
+
+
   /// Parsed representation (AST) of function.
-  /// Note: available only in CompletionMode 
-  /// (if Manager.IsIntelliSenseMode = true)
   public new Ast : PT.ClassMember.Function { get { base.Ast :> PT.ClassMember.Function } }
 
   public GetMethodBase () : SR.MethodBase

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Sat Jan 20 14:11:54 2007
@@ -1627,7 +1627,7 @@
   internal bind_and_add_member (class_member : PT.ClassMember) : MemberBuilder
   {
     when (class_member.Env == null)
-      class_member.Env = GlobalEnv;
+      class_member._env = GlobalEnv;
 
     Util.locate (class_member.loc, {
       // if current class is static (it's a module) then sign its members to static

Modified: nemerle/trunk/ncc/misc/ComponentsFactory.n
==============================================================================
--- nemerle/trunk/ncc/misc/ComponentsFactory.n	(original)
+++ nemerle/trunk/ncc/misc/ComponentsFactory.n	Sat Jan 20 14:11:54 2007
@@ -32,7 +32,4 @@
 {
   [AbstractFactory (MethodBuilder)]
   public class CompilerComponentsFactory   {  }
-  
-  [AbstractFactory (Override (CompletionMethodBuilder, MethodBuilder))]
-  public class CompletionComponentsFactory : CompilerComponentsFactory { }
 }

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Sat Jan 20 14:11:54 2007
@@ -855,11 +855,11 @@
 
       def member = ClassMember.Function (header = h, name = h.name,  modifiers = modifiers,
                                          loc = loc, body = body, implemented = impl);
-      member.Env = env;
+      member._env = env;
       when (Manager.IsIntelliSenseMode)
       {
-        member.Tokens       = bodyTokens;
-        member.BodyLocation = loc;
+        member._tokens       = bodyTokens;
+        member._bodyLocation = loc;
       }
       member
     }
@@ -968,7 +968,7 @@
                       def fh = Fun_header (toks.Location + nametok.Location, name, ret_type, parms);
                       def mloc   = nametok.Location + Location_stack.top();
                       def member = ClassMember.Function (mloc, fh.name, method_atts, fh, kind, bd);
-                      member.Env = env;
+                      member._env = env;
                       getter = Some (member);
 
                     | "set" =>
@@ -991,7 +991,7 @@
                                            typarms, name, PExpr.Void (), setter_parms);
                       def mloc   = nametok.Location + Location_stack.top();
                       def member = ClassMember.Function (mloc, fh.name, method_atts, fh, kind, bd);
-                      member.Env = env;
+                      member._env = env;
                       setter = Some (member);
 
                     | _ =>
@@ -1017,7 +1017,7 @@
           def prop = ClassMember.Property (loc + group.Location, id, mods, 
             ret_type, prop_ty, parms, getter, setter);
 
-          prop.BodyLocation = group.Location;
+          prop._bodyLocation = group.Location;
           prop
 
         | Token.Operator ("=") as toc =>
@@ -1034,7 +1034,7 @@
           );
           take_attributes_out (ref customs, System.AttributeTargets.Field, true, mods);
           def result = ClassMember.Field (loc + last_tok.Location, id, mods, ret_type);
-          result.BodyLocation = bodyLocation;
+          result._bodyLocation = bodyLocation;
           result;
           
         | Token.EndOfGroup =>
@@ -1044,7 +1044,8 @@
         | t => Error (t, "expecting `;' or `{ }' in field / property declaration"); null
       }
       
-      when (res != null) res.Env = env;
+      when (res != null)
+        res._env = env;
       res
     }
 
@@ -1100,7 +1101,7 @@
                     def name = Splicable.Name (mloc, mkname (i + "_" + plain_name));
                     def fh = Fun_header (mloc, name, PExpr.Void (mloc), method_parms);
                     def method = ClassMember.Function (loc, name, method_atts, fh, kind, bd);
-                    method.Env = env;
+                    method._env = env;
                     if (i == "remove")
                       remove = method;
                     else
@@ -1147,12 +1148,12 @@
           def fh = Fun_header (loc, name, PExpr.Void (loc), method_parms);
           // funbody is filled during typing
           add = ClassMember.Function (loc, name, method_atts, fh, [], null);
-          add.Env = env;
+          add._env = env;
 
           def name = Splicable.Name (loc, mkname ("remove_" + plain_name));
           def fh = Fun_header (loc, name, PExpr.Void (loc), method_parms);
           remove = ClassMember.Function (loc, name, method_atts, fh, [], null);
-          remove.Env = env;
+          remove._env = env;
 
           ClassMember.Event (loc, id, mods, ret_type, field, add, remove)
           

Modified: nemerle/trunk/ncc/parsing/ParseTree.n
==============================================================================
--- nemerle/trunk/ncc/parsing/ParseTree.n	(original)
+++ nemerle/trunk/ncc/parsing/ParseTree.n	Sat Jan 20 14:11:54 2007
@@ -92,7 +92,7 @@
     }
   }
 
-  [Record (Exclude = [Env, Tokens, BodyLocation, _definedIn])]
+  [Record (Exclude = [_env, _tokens, _bodyLocation, _definedIn])]
   public variant ClassMember : DeclarationBase
   {
     | TypeDeclaration { td : TopDeclaration; }
@@ -117,9 +117,11 @@
       }
     | EnumOption { value : option [PExpr]; }
 
-    public mutable Env : GlobalEnv;
-    internal mutable Tokens : Token.BracesGroup;
-    internal mutable BodyLocation : Location;
+    // It's prevent esers from fortuitous modification of Env property.
+    public SetEnv(env : GlobalEnv) : void { _env = env; } 
+    [Accessor] internal mutable _env          : GlobalEnv;
+    [Accessor] internal mutable _tokens       : Token.BracesGroup;
+    [Accessor] internal mutable _bodyLocation : Location;
     /// This property contain referens to TopDeclaration where defined this member.
     [Accessor] internal mutable _definedIn : TopDeclaration;
     

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Sat Jan 20 14:11:54 2007
@@ -191,7 +191,7 @@
     {
       Instance = this;
       assert (options != null);
-      componentsFactory = instantiateComponentsFactory ();
+      componentsFactory = CreateComponentsFactory ();
       ParsingPipeline = MainParser.Parse;
       def scanner = ScanTypeHierarchy (this);
       ScanningPipeline = scanner.ProcessDeclaration;
@@ -227,7 +227,7 @@
       member.HasBeenAssigned = trigger_obsolete_warn;
     }
     
-    protected virtual instantiateComponentsFactory () : CompilerComponentsFactory
+    protected virtual CreateComponentsFactory () : CompilerComponentsFactory
     {
       CompilerComponentsFactory ()    
     }
@@ -472,21 +472,6 @@
       }
     }
 
-    /// This method must be overridden in intellisece engine.
-    /// It must obtain methode body code frome sorce. Parse it. And return result tokens.
-    protected internal virtual PreParseMethodBody (_method : MethodBuilder)
-      : Token.BracesGroup
-    {
-      throw System.NotImplementedException ();
-    }
-
-    /// This method must be overridden in intellisece engine.
-    protected internal virtual SetCompiletMessages (_messages : SCG.List[CompilerMessage]) : void
-    {
-      throw System.NotImplementedException ();
-    }
-
-
     /// Return true if 'method' is extension method.
     protected internal virtual IsExtensionMethod (method : IMethod, tyVar2 : TyVar) : bool
     {



More information about the svn mailing list