[svn] r7090: nemerle/trunk: macros/Internals.n ncc/generation/HierarchyEmitter.n ncc/hierarchy/ClassMember...

VladD2 svnadmin at nemerle.org
Fri Dec 15 10:40:46 CET 2006


Log:
1. Rename ManagerClass.IsInCompletionMode property to IsIntelliSenseMode.
2. Add ManagerClass.IsCompletioInProgress property.

Author: VladD2
Date: Fri Dec 15 10:40:41 2006
New Revision: 7090

Modified:
   nemerle/trunk/macros/Internals.n
   nemerle/trunk/ncc/generation/HierarchyEmitter.n
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/hierarchy/TypeBuilder.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/parsing/Utility.n
   nemerle/trunk/ncc/passes.n
   nemerle/trunk/ncc/typing/Typer.n

Modified: nemerle/trunk/macros/Internals.n
==============================================================================
--- nemerle/trunk/macros/Internals.n	(original)
+++ nemerle/trunk/macros/Internals.n	Fri Dec 15 10:40:41 2006
@@ -58,7 +58,7 @@
       | _ => ()
     }
 
-    when (Nemerle.Macros.ImplicitCTX().Manager.IsInCompletionMode)
+    when (Nemerle.Macros.ImplicitCTX().Manager.IsIntelliSenseMode)
     { // Add fake method whith body of field initialiser.
       def n = "_N_field_initialiser__" + f.Name;
       //Fixme: VladD2: I not understand how add NemerleAttributes.SpecialName to this method.
@@ -103,7 +103,7 @@
         | _ => ()
       }
 
-    if (Nemerle.Macros.ImplicitCTX().Manager.IsInCompletionMode)
+    if (Nemerle.Macros.ImplicitCTX().Manager.IsIntelliSenseMode)
     {} // Do nothing if is in completion mode.
     // if we didn't end up with literal value, create assignment in constructor
     else when (f.const_value == null) {

Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n	Fri Dec 15 10:40:41 2006
@@ -65,13 +65,13 @@
         _need_entry_point = true;
         _entry_point = None ();
       };
-      unless (Manager.IsInCompletionMode)
+      unless (Manager.IsIntelliSenseMode)
         System.AppDomain.CurrentDomain.TypeResolve += resolve_hack;
     }
 
     public Dispose () : void
     {
-      unless (Manager.IsInCompletionMode)
+      unless (Manager.IsIntelliSenseMode)
         System.AppDomain.CurrentDomain.TypeResolve -= resolve_hack;
     }
     
@@ -349,7 +349,7 @@
       Iter (emit_impl);
 
       // MaybeBailout inteferes with the Code Completion Engine
-      unless (Manager.IsInCompletionMode)
+      unless (Manager.IsIntelliSenseMode)
         Message.MaybeBailout ();
 
       when (!aux_phase) _cgil_phase = 4;

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Fri Dec 15 10:40:41 2006
@@ -66,11 +66,11 @@
   {
     get
     {
-      if (Manager.IsInCompletionMode)
+      if (Manager.IsIntelliSenseMode)
         _ast
       else
         throw System.InvalidOperationException (
-        "Ast accessible only if Manager.IsInCompletionMode is true.");
+        "Ast accessible only if Manager.IsIntelliSenseMode is true.");
     }
   }
 
@@ -87,7 +87,7 @@
   protected this (par : TypeBuilder, ast : PT.ClassMember)
   {
     declaring_type = par;
-    _ast = if (Manager.IsInCompletionMode) ast else null;
+    _ast = if (Manager.IsIntelliSenseMode) ast else null;
     Env = ast.Env;
     loc = ast.loc;
     modifiers = ast.modifiers;
@@ -421,7 +421,7 @@
 
   /// Parsed representation (AST) of field.
   /// Note: available only in CompletionMode 
-  /// (if Manager.IsInCompletionMode = true)
+  /// (if Manager.IsIntelliSenseMode = true)
   public new Ast : PT.ClassMember.Field { get { base.Ast :> PT.ClassMember.Field } }
 
   public this (par : TypeBuilder, fieldAst : PT.ClassMember.Field)
@@ -552,7 +552,7 @@
 
   /// Parsed representation (AST) of property.
   /// Note: available only in CompletionMode 
-  /// (if Manager.IsInCompletionMode = true)
+  /// (if Manager.IsIntelliSenseMode = true)
   public new Ast : PT.ClassMember.Property { get { base.Ast :> PT.ClassMember.Property } }
   
   public this (par : TypeBuilder, propertyAst : PT.ClassMember.Property)
@@ -694,7 +694,7 @@
 
   /// Parsed representation (AST) of function.
   /// Note: available only in CompletionMode 
-  /// (if Manager.IsInCompletionMode = true)
+  /// (if Manager.IsIntelliSenseMode = true)
   public new Ast : PT.ClassMember.Function { get { base.Ast :> PT.ClassMember.Function } }
 
   public GetMethodBase () : SR.MethodBase
@@ -799,7 +799,7 @@
     {
       //Trace.WriteLine($"$_indent>>>> ##### BodyTokens ($Name)!");
       Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-      Trace.Assert(Manager.IsInCompletionMode);
+      Trace.Assert(Manager.IsIntelliSenseMode);
       when (_bodyTokens == null)
       {
         //def indent = _indent; _indent += "  ";
@@ -824,7 +824,7 @@
     {
       //Trace.WriteLine($"$_indent>>>> ##### BodyParsed ($Name)!");
       Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-      Trace.Assert(Manager.IsInCompletionMode);
+      Trace.Assert(Manager.IsIntelliSenseMode);
       when (_bodyParsed == null)
       {
         //def indent = _indent; _indent += "  ";
@@ -849,7 +849,7 @@
       Manager.CheckSolver();
       //Trace.WriteLine($"$_indent>>>> ##### BodyTyped ($Name)!");
       Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
-      Trace.Assert(Manager.IsInCompletionMode);
+      Trace.Assert(Manager.IsIntelliSenseMode);
       when (_bodyTyped == null)
       {
         //def indent = _indent; _indent += "  ";
@@ -1100,7 +1100,7 @@
       loc          = f.header.loc);
 
     fun_header.body = fun_body;
-    when (Manager.IsInCompletionMode)
+    when (Manager.IsIntelliSenseMode)
       _bodyTokens = f.Tokens;
 
     unless (check_variance_valid (fun_header.ret_type.Fix(), 1))
@@ -1318,7 +1318,7 @@
 
   /// Parsed representation (AST) of event.
   /// Note: available only in CompletionMode 
-  /// (if Manager.IsInCompletionMode = true)
+  /// (if Manager.IsIntelliSenseMode = true)
   public new Ast : PT.ClassMember.Event { get { base.Ast :> PT.ClassMember.Event } }
   
   public this (par : TypeBuilder, eventAst : PT.ClassMember.Event) {

Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n	(original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n	Fri Dec 15 10:40:41 2006
@@ -83,7 +83,7 @@
   {
     get
     {
-      System.Diagnostics.Trace.Assert(Manager.IsInCompletionMode);
+      System.Diagnostics.Trace.Assert(Manager.IsIntelliSenseMode);
       pt_tydecl :: partial_parts
     }
   }
@@ -1866,7 +1866,7 @@
     }
 
     // we no longer need it, let GC kill it
-    unless (Manager.IsInCompletionMode)
+    unless (Manager.IsIntelliSenseMode)
     {
       pt_tydecl = null;
       partial_parts = null;

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Fri Dec 15 10:40:41 2006
@@ -819,7 +819,7 @@
             loc += brac.Location;
             // we skip body parsing in completion mode,
             // to save time and ignore errors
-            if (Manager.IsInCompletionMode)
+            if (Manager.IsIntelliSenseMode)
             {
               bodyTokens = brac;
               FunBody.Parsed (PExpr.Sequence (brac.Location, []))
@@ -831,7 +831,7 @@
             loc += tok.Location;
             FunBody.Abstract ()
           | Token.Operator ("$") =>
-            System.Diagnostics.Trace.Assert(!Manager.IsInCompletionMode);
+            System.Diagnostics.Trace.Assert(!Manager.IsIntelliSenseMode);
             def expr = parse_spliced_expr ();
             loc += expr.Location;
             def result = FunBody.Parsed (expr);
@@ -844,7 +844,7 @@
       def member = ClassMember.Function (header = h, name = h.name,  modifiers = modifiers,
                                          loc = loc, body = body, kind = FunKind.Method (impl));
       member.Env = env;
-      when (Manager.IsInCompletionMode)
+      when (Manager.IsIntelliSenseMode)
         member.Tokens = bodyTokens;
       member
     }

Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n	(original)
+++ nemerle/trunk/ncc/parsing/Utility.n	Fri Dec 15 10:40:41 2006
@@ -326,7 +326,7 @@
       if (s.IsEmpty)
         Location.Default
       else
-        if (Manager.IsInCompletionMode)
+        if (Manager.IsIntelliSenseMode)
           s [s.Count - 1].AsGenerated ()
         else
           s [s.Count - 1]

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Fri Dec 15 10:40:41 2006
@@ -261,9 +261,12 @@
       ProgressBar (10 + current_tyinfo_count * 90 / tyinfo_counter);
     }
 
-    protected mutable _isInCompletionMode : bool = false;
-      
-    public IsInCompletionMode : bool { get { _isInCompletionMode } }
+    /// True if compiler runing in IntelliSense mode. This disable some 
+    /// optimisations and anable lazy methods bodies compilation.
+    [Accessor] protected mutable _isIntelliSenseMode    : bool = false;
+    /// True if now completion word in progress. This enable additional checks
+    /// of completion tokens.
+    [Accessor] protected mutable _isCompletioInProgress : bool = false;
     
     ProgressBar (stage : int) : void
     {

Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n	(original)
+++ nemerle/trunk/ncc/typing/Typer.n	Fri Dec 15 10:40:41 2006
@@ -208,7 +208,7 @@
         solver.InUse = false;
       }
 
-      when (Manager.IsInCompletionMode)
+      when (Manager.IsIntelliSenseMode)
         try {
           assert (!solver.InUse);
           assert (solver.IsTopLevel);
@@ -385,7 +385,7 @@
       def t2 = Typer2 (current_type, meth);
       t2.Run ();
 
-      unless (Manager.IsInCompletionMode) {
+      unless (Manager.IsIntelliSenseMode) {
         def t3 = Typer3 (meth);
         t3.Run ();
       }
@@ -1147,13 +1147,14 @@
    
     DoType (expression : PT.PExpr, expected : TyVar, is_toplevel_in_seq : bool) : TExpr
     {
-      assert(true);
-      match (expression)
+      when (Manager.IsCompletioInProgress)
       {
-        | PT.PExpr.Member (_, PT.Splicable.HalfId (_)) | PT.PExpr.ToComplete (_) =>
+        assert(true);
           Manager.Complete (expression, expected, this, env);
-          throw System.NotImplementedException ();
+      }
  
+      match (expression)
+      {
         | PT.PExpr.ParmByRef
         | PT.PExpr.ParmOut =>
           ReportFatal (messenger, 
@@ -1713,6 +1714,9 @@
 
         | PT.PExpr.TypedPattern  =>
           Util.ice ("typed pattern in raw expr")
+
+        | PT.PExpr.ToComplete => 
+          Util.ice ("The completion tokens allowed only if Manager.IsCompletioInProgress is true.")
       }
     }
     #endregion
@@ -2370,7 +2374,7 @@
     {
       match (TypeMember (obj, name, expected)) {
         | Some ([]) =>
-            if (Manager.IsInCompletionMode) {
+            if (Manager.IsIntelliSenseMode) {
               TExpr.Error()
             }
             else
@@ -3272,7 +3276,7 @@
               PopLocals ();
             }
           } else if (ns.Equals (Manager.Typer_yield_macro)) {
-            when (!inside_yielding_function && !Manager.IsInCompletionMode) {
+            when (!inside_yielding_function && !Manager.IsIntelliSenseMode) {
               _ = GetYieldType ();
               log (TYPING, "throwing STY");
               throw SwitchToYielding ();



More information about the svn mailing list