[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