[svn] r7270: nemerle/trunk/ncc/hierarchy/ClassMembers.n nemerle/trunk/ncc/parsing/AST.n nemerle/trunk/ncc/...

IT svnadmin at nemerle.org
Mon Jan 15 20:32:06 CET 2007


Log:
Goto for generated constructors.

Author: IT
Date: Mon Jan 15 20:32:02 2007
New Revision: 7270

Modified:
   nemerle/trunk/ncc/hierarchy/ClassMembers.n
   nemerle/trunk/ncc/parsing/AST.n
   nemerle/trunk/ncc/parsing/MainParser.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Checker.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/GotoInfo.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n
   vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n

Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n	(original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n	Mon Jan 15 20:32:02 2007
@@ -789,6 +789,11 @@
     method_base
   }
 
+  public HasMethodBase : bool
+  {
+    get { method_base != null }
+  }
+
   public override GetHandle () : SR.MemberInfo
   {
     GetMethodBase ()

Modified: nemerle/trunk/ncc/parsing/AST.n
==============================================================================
--- nemerle/trunk/ncc/parsing/AST.n	(original)
+++ nemerle/trunk/ncc/parsing/AST.n	Mon Jan 15 20:32:02 2007
@@ -410,9 +410,9 @@
       Column == l2.Column && EndColumn == l2.EndColumn
     }
 
-    public IsEmpty() : bool
+    public IsEmpty : bool
     {
-      EndLine == 0 || EndLine < Line || (EndLine == Line && EndColumn <= Column)
+      get { EndLine == 0 || EndLine < Line || (EndLine == Line && EndColumn <= Column) }
     }
 
     /// True if second contain inside this location and them not equal.

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Mon Jan 15 20:32:02 2007
@@ -768,7 +768,7 @@
                 def paramsLoc = peek_token ().Location;
                 def parms = parse_parameters ();
                 def header = Fun_header (start_tok.Location + paramsLoc,
-                                         name = Splicable.Name (mkname (".ctor")),
+                                         name = Splicable.Name (tok.Location, mkname (".ctor")),
                                          ret_type = PExpr.Void (),
                                          parms = parms,
                                          typarms = Typarms.Empty);
@@ -849,7 +849,10 @@
                                          loc = loc, body = body, kind = FunKind.Method (impl));
       member.Env = env;
       when (Manager.IsIntelliSenseMode)
+      {
         member.Tokens = bodyTokens;
+        member.BodyLocation = loc;
+      }
       member
     }
 

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Checker.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Checker.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Checker.n	Mon Jan 15 20:32:02 2007
@@ -139,7 +139,7 @@
 
     AddRegion(loc : Location, isExpanded : bool) : void
     {
-      when (!loc.IsEmpty())
+      when (!loc.IsEmpty)
       {
         _addHiddenRegion(
           if (IsNext(loc.Line, loc.Column, ' '))
@@ -431,13 +431,13 @@
           {
           | Some(loc) => 
 
-            usingLoc = if (usingLoc.IsEmpty()) loc else usingLoc.Combine(us.Location);
+            usingLoc = if (usingLoc.IsEmpty) loc else usingLoc.Combine(us.Location);
 
           | None      => ()
           }
         }
 
-        when (!usingLoc.IsEmpty())
+        when (!usingLoc.IsEmpty)
         {
           mutable lineStart = usingLoc.Line;
           mutable colStart  = usingLoc.Column;

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/GotoInfo.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/GotoInfo.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/GotoInfo.n	Mon Jan 15 20:32:02 2007
@@ -1,10 +1,11 @@
 using System;
 
-using Nemerle.Utility;
 using Nemerle.Compiler;
 using Nemerle.Compiler.Typedtree;
 using Nemerle.Compiler.Parsetree;
 using Nemerle.Compiler.Utils;
+using Nemerle.Imperative;
+using Nemerle.Utility;
 
 namespace Nemerle.Completion2
 {
@@ -105,6 +106,11 @@
       _usageType = usageType;
     }
 
+    public this (top : TopDeclaration)
+    {
+      this(top.name.Location);
+    }
+
     public this(_fh : Typedtree.Fun_header)
     {
     }

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Nemerle.Completion2/CodeModel/Project.Type.n	Mon Jan 15 20:32:02 2007
@@ -416,7 +416,16 @@
       | lv is LocalValue                  => [GotoInfo(lv)]
       | tc is TExpr.ImplicitValueTypeCtor => getTypeGotoInfo(tc.ty)
       | tv is TyVar                       => getTypeGotoInfo(tv)
-      | tb is TypeBuilder                 => tb.PartsLocation.Map(GotoInfo);
+      | mb is MethodBuilder               =>
+
+        if (mb.Name == ".ctor" && mb.Ast.name.Location.IsGenerated)
+          mb.DeclaringType.AstParts.Map(GotoInfo);
+        else
+          [GotoInfo(mb)]
+
+      // This code should be used instead of the code above.
+      // | mb is MethodBuilder when mb.Name == ".ctor" && mb.Ast.name.Location.IsGenerated with tb = mb.DeclaringType
+      | tb is TypeBuilder                 => tb.AstParts.Map(GotoInfo);
       | fh is Typedtree.Fun_header        => [GotoInfo(fh)]
       | m  is IMember                     => [GotoInfo(m)]
       | p  is Pattern.Enum                => [GotoInfo(p.fld)]

Modified: vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n
==============================================================================
--- vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n	(original)
+++ vs-plugin/trunk/Nemerle.Compiler.Utils/Utils.n	Mon Jan 15 20:32:02 2007
@@ -217,7 +217,7 @@
       : IMember
     {
       assert(true);
-      def members = typeBuilder.GetActiveMembers(fileIndex, line, col, comparator);
+      def members = typeBuilder.GetActiveMembers(fileIndex, line, col);
 
       def filter(mlist)
       {
@@ -244,16 +244,14 @@
       typeBuilder.GetActiveMember(fileIndex, line, col, (m, _) => m);
     }
 
-    public GetActiveMembers1(
+    public GetActiveMembers(
       this typeBuilder : TypeBuilder,
       fileIndex        : int,
       line             : int,
-      col              : int,
-      comparator       : IMember * IMember -> IMember
+      col              : int
     )
       : list[IMember]
     {
-      assert(true);
       def loop(members : list[IMember])
       {
       | member :: tail =>
@@ -262,9 +260,7 @@
         {
         | tb is TypeBuilder   =>
 
-          def member = tb.GetActiveMember(fileIndex, line, col, comparator);
-
-          if (member == null) loop(tail) else member :: loop(tail)
+          tb.GetActiveMembers(fileIndex, line, col) + loop(tail)
 
         | mb is MemberBuilder =>
 
@@ -293,17 +289,6 @@
       loop(members);
     }
 
-    public GetActiveMembers(
-      this typeBuilder : TypeBuilder,
-      fileIndex        : int,
-      line             : int,
-      col              : int
-    )
-      : list[IMember]
-    {
-      typeBuilder.GetActiveMembers(fileIndex, line, col, (m, _) => m);
-    }
-
     public GetLocalPath(this asm : Assembly) : string
     {
        Uri(asm.CodeBase).LocalPath;



More information about the svn mailing list