[svn] r6893: nemerle/trunk/ncc/hierarchy/ClassMembers.n

VladD2 svnadmin at nemerle.org
Wed Nov 15 03:20:48 CET 2006


Log:
Add diagnostics messages.

Author: VladD2
Date: Wed Nov 15 03:20:47 2006
New Revision: 6893

Modified:
   nemerle/trunk/ncc/hierarchy/ClassMembers.n

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Wed Nov 15 03:20:47 2006
@@ -29,6 +29,7 @@
 using Nemerle.Collections;
 using Nemerle.Utility;
 using Nemerle.Compiler.Typedtree;
+using System.Diagnostics;
 
 using SCG = System.Collections.Generic;
 using SR  = System.Reflection;
@@ -773,6 +774,8 @@
 
   mutable _bodyTokens : Token.BracesGroup;
 
+  //mutable _indent : string = "";
+
   /// The method body tokens. 
   /// Note: For call this method you must implement method 
   /// PreParseMethodBody in a subtype.
@@ -780,14 +783,18 @@
   {
     get
     {
+      //Trace.WriteLine($"$_indent>>>> ##### BodyTokens ($Name)!");
       System.Diagnostics.Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract));
       System.Diagnostics.Trace.Assert(Manager.IsInCompletionMode);
       when (_bodyTokens == null)
       {
+        def indent = _indent; _indent += "  ";
         Manager.SetCompiletMessages (BodyMessages);
         _bodyTokens = Manager.PreParseMethodBody (this);
+        _indent = indent;
       }
 
+      //Trace.WriteLine($"$_indent<<<< ##### BodyTokens ($Name)!");
       _bodyTokens
     }
 
@@ -801,15 +808,19 @@
   {
     get
     {
+      //Trace.WriteLine($"$_indent>>>> ##### BodyParsed ($Name)!");
       System.Diagnostics.Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract));
       System.Diagnostics.Trace.Assert(Manager.IsInCompletionMode);
       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
     }
   }
@@ -821,10 +832,12 @@
   {
     get
     {
+      //Trace.WriteLine($"$_indent>>>> ##### BodyTyped ($Name)!");
       System.Diagnostics.Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract));
       System.Diagnostics.Trace.Assert(Manager.IsInCompletionMode);
       when (_bodyTyped == null)
       {
+        def indent = _indent; _indent += "  ";
         Manager.SetCompiletMessages (BodyMessages);
         try
         {
@@ -833,8 +846,10 @@
           _bodyTyped = (fun_header.body :> FunBody.Typed).expr;
         }
         finally { Manager.SetCompiletMessages (null); }
+        _indent = indent;
       }
 
+      //Trace.WriteLine($"$_indent<<<< ##### BodyTyped ($Name)!");
       _bodyTyped
     }
   }
@@ -875,8 +890,6 @@
 
     def f = functionAst;
 
-    _bodyTokens = f.Tokens;
-
     when (LexerBase.IsOperator (name))
       unless (IsStatic && IsPublic)
         Message.Error ($"User defined operator '$(DeclaringType).$(name)'"
@@ -1068,6 +1081,9 @@
       tenv         = tenv',
       loc          = f.header.loc);
 
+    if (Manager.IsInCompletionMode)
+      _bodyTokens = f.Tokens;
+    else
     fun_header.body = fun_body;
     
     unless (check_variance_valid (fun_header.ret_type.Fix(), 1))



More information about the svn mailing list