[svn] r6629: nemerle/trunk/ncc: hierarchy/ClassMembers.n parsing/MainParser.n passes.n

VladD2 svnadmin at nemerle.org
Fri Sep 8 12:24:34 CEST 2006


Log:
Fix parsing method body (which contains implicit match) in completion mode.

Author: VladD2
Date: Fri Sep  8 12:24:28 2006
New Revision: 6629

Modified:
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/passes.n

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Fri Sep  8 12:24:28 2006
@@ -632,6 +632,8 @@
   [Accessor (flags = Override)]
   protected body_location : Location;
   
+  [Accessor] _parsedFunction : PT.ClassMember.Function;
+  
   is_var_args : bool;
 
   public GetMethodBase () : SR.MethodBase
@@ -714,7 +716,10 @@
 
   public this (par : TypeBuilder, f : PT.ClassMember.Function)
   {
-    this (par, f, false)
+    this (par, f, false);
+    
+    //when (Manager.IsInCompletionMode)
+    _parsedFunction = f;
   }
   
   public this (par : TypeBuilder, f : PT.ClassMember.Function, is_property : bool)

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Fri Sep  8 12:24:28 2006
@@ -149,6 +149,27 @@
       }
     }
     
+    /// Parse function boby expression given lexer producing its content 
+    /// and context in which this expression is situated.
+    public static ParseExpr (
+      [NotNull] env       : GlobalEnv,
+      [NotNull] lexer     : LexerBase,
+      [NotNull] funHeader : Fun_header
+    ) : PExpr
+    {
+      def preparser = PreParser (lexer);
+      def tokens = preparser.PreParse ();
+      def parser = MainParser (env);
+      
+      def tokens2 = match (tokens)
+        {
+          | BracesGroup(LooseGroup(BracesGroup as group)) => group
+          | _ => tokens
+        };
+
+      parser.parse_block (tokens2, funHeader.parms);
+    }
+    
     /** Parse well formed source code of toplevel program, using the given instance
         of [LexerBase] for obtaining tokens.
      */

Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n	(original)
+++ nemerle/trunk/ncc/passes.n	Fri Sep  8 12:24:28 2006
@@ -283,9 +283,7 @@
 
     protected mutable _isInCompletionMode : bool = false;
       
-    public IsInCompletionMode : bool {
-      get { _isInCompletionMode }
-    }
+    public IsInCompletionMode : bool { get { _isInCompletionMode } }
     
     ProgressBar (stage : int) : void
     {



More information about the svn mailing list