[svn] r7302: nemerle/trunk: macros/Util.n
ncc/completion/CodeCompletionEngine.n ncc/hierarchy/ClassMembers...
VladD2
svnadmin at nemerle.org
Sat Jan 20 14:11:57 CET 2007
Log:
1. Move IntelliSense related code into Nemerle.VSIP\Nemerle.VsIntegration.Tests project.
2. Convert some fields to properties.
3. Rename instantiateComponentsFactory() to CreateComponentsFactory.
Author: VladD2
Date: Sat Jan 20 14:11:54 2007
New Revision: 7302
Modified:
nemerle/trunk/macros/Util.n
nemerle/trunk/ncc/completion/CodeCompletionEngine.n
nemerle/trunk/ncc/hierarchy/ClassMembers.n
nemerle/trunk/ncc/hierarchy/TypeBuilder.n
nemerle/trunk/ncc/misc/ComponentsFactory.n
nemerle/trunk/ncc/parsing/MainParser.n
nemerle/trunk/ncc/parsing/ParseTree.n
nemerle/trunk/ncc/passes.n
Modified: nemerle/trunk/macros/Util.n
==============================================================================
--- nemerle/trunk/macros/Util.n (original)
+++ nemerle/trunk/macros/Util.n Sat Jan 20 14:11:54 2007
@@ -145,7 +145,7 @@
}
]>;
- prop.Env = storage_field.Env;
+ prop.SetEnv (storage_field.Env);
when (want_internal) {
prop.Attributes &= ~NemerleAttributes.Public;
Modified: nemerle/trunk/ncc/completion/CodeCompletionEngine.n
==============================================================================
--- nemerle/trunk/ncc/completion/CodeCompletionEngine.n (original)
+++ nemerle/trunk/ncc/completion/CodeCompletionEngine.n Sat Jan 20 14:11:54 2007
@@ -33,8 +33,6 @@
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define DEBUG
-
using System;
using Nemerle.Assertions;
using Nemerle.Compiler;
@@ -264,138 +262,4 @@
| _ => name
}
}
-
- public class CompletionMethodBuilder : MethodBuilder {
- public this (par : TypeBuilder, functionAst : ClassMember.Function) {
- this (par, functionAst, false);
- }
- public this (par : TypeBuilder, functionAst : ClassMember.Function, is_property : bool) {
- base (par, functionAst, is_property);
- _bodyTokens = functionAst.Tokens;
- }
-
- public override EnsureCompiled() : void
- {
- unless (BodyLocation.FileIndex > 0 && this.Attributes %&& NemerleAttributes.Abstract)
- _ = BodyTyped;
- }
-
- mutable _bodyMessages : SCG.List[CompilerMessage];
- public override BodyMessages : SCG.List[CompilerMessage]
- {
- get
- {
- Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- when (_bodyMessages == null)
- _bodyMessages = SCG.List();
-
- _bodyMessages
- }
- }
-
- public override ResetCodeCache () : void
- {
- when (_bodyMessages != null)
- _bodyMessages.Clear();
-
- _bodyTokens = null;
- _bodyParsed = null;
- _bodyTyped = null;
- fun_header.body = null;
- }
-
- mutable _bodyTokens : Token.BracesGroup;
-
- //mutable _indent : string = "";
-
- /// The method body tokens.
- /// Note: For call this method you must implement method
- /// PreParseMethodBody in a subtype.
- public override BodyTokens : Token.BracesGroup
- {
- get
- {
- //Trace.WriteLine($"$_indent>>>> ##### BodyTokens ($Name)!");
- Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsIntelliSenseMode);
- when (_bodyTokens == null)
- {
- //def indent = _indent; _indent += " ";
- Manager.SetCompiletMessages (BodyMessages);
- _bodyTokens = Manager.PreParseMethodBody (this);
- //_indent = indent;
- }
-
- //Trace.WriteLine($"$_indent<<<< ##### BodyTokens ($Name)!");
- _bodyTokens
- }
-
- set { ResetCodeCache(); _bodyTokens = value; }
- }
-
- mutable _bodyParsed : PExpr;
-
- /// The method body parsed expressions.
- public override BodyParsed : PExpr
- {
- get
- {
- //Trace.WriteLine($"$_indent>>>> ##### BodyParsed ($Name)!");
- Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsIntelliSenseMode);
- 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
- }
- }
-
- public override IsBodyCompilable : bool
- {
- get
- {
- def res = HasAbstractBody || BodyLocation.IsGenerated
- || BodyLocation.FileIndex <= 0
- || Attributes %&& NemerleAttributes.SpecialName;
- !res
- }
- }
-
- mutable _bodyTyped : TExpr;
-
- /// The method body parsed expressions.
- public override BodyTyped : TExpr
- {
- get
- {
- Manager.CheckSolver();
- //Trace.WriteLine($"$_indent>>>> ##### BodyTyped ($Name)!");
- Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsIntelliSenseMode);
- when (_bodyTyped == null)
- {
- //def indent = _indent; _indent += " ";
- Manager.SetCompiletMessages (BodyMessages);
- try
- {
- _ = BodyParsed; // Use side affect
- RunBodyTyper();
- _bodyTyped = (fun_header.body :> FunBody.Typed).expr;
- }
- finally { Manager.SetCompiletMessages (null); }
- //_indent = indent;
- }
-
- //Trace.WriteLine($"$_indent<<<< ##### BodyTyped ($Name)!");
- _bodyTyped
- }
- }
- }
}
Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n (original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n Sat Jan 20 14:11:54 2007
@@ -757,9 +757,9 @@
[Accessor]
is_var_args : bool;
+
+
/// Parsed representation (AST) of function.
- /// Note: available only in CompletionMode
- /// (if Manager.IsIntelliSenseMode = true)
public new Ast : PT.ClassMember.Function { get { base.Ast :> PT.ClassMember.Function } }
public GetMethodBase () : SR.MethodBase
Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n (original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n Sat Jan 20 14:11:54 2007
@@ -1627,7 +1627,7 @@
internal bind_and_add_member (class_member : PT.ClassMember) : MemberBuilder
{
when (class_member.Env == null)
- class_member.Env = GlobalEnv;
+ class_member._env = GlobalEnv;
Util.locate (class_member.loc, {
// if current class is static (it's a module) then sign its members to static
Modified: nemerle/trunk/ncc/misc/ComponentsFactory.n
==============================================================================
--- nemerle/trunk/ncc/misc/ComponentsFactory.n (original)
+++ nemerle/trunk/ncc/misc/ComponentsFactory.n Sat Jan 20 14:11:54 2007
@@ -32,7 +32,4 @@
{
[AbstractFactory (MethodBuilder)]
public class CompilerComponentsFactory { }
-
- [AbstractFactory (Override (CompletionMethodBuilder, MethodBuilder))]
- public class CompletionComponentsFactory : CompilerComponentsFactory { }
}
Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n (original)
+++ nemerle/trunk/ncc/parsing/MainParser.n Sat Jan 20 14:11:54 2007
@@ -855,11 +855,11 @@
def member = ClassMember.Function (header = h, name = h.name, modifiers = modifiers,
loc = loc, body = body, implemented = impl);
- member.Env = env;
+ member._env = env;
when (Manager.IsIntelliSenseMode)
{
- member.Tokens = bodyTokens;
- member.BodyLocation = loc;
+ member._tokens = bodyTokens;
+ member._bodyLocation = loc;
}
member
}
@@ -968,7 +968,7 @@
def fh = Fun_header (toks.Location + nametok.Location, name, ret_type, parms);
def mloc = nametok.Location + Location_stack.top();
def member = ClassMember.Function (mloc, fh.name, method_atts, fh, kind, bd);
- member.Env = env;
+ member._env = env;
getter = Some (member);
| "set" =>
@@ -991,7 +991,7 @@
typarms, name, PExpr.Void (), setter_parms);
def mloc = nametok.Location + Location_stack.top();
def member = ClassMember.Function (mloc, fh.name, method_atts, fh, kind, bd);
- member.Env = env;
+ member._env = env;
setter = Some (member);
| _ =>
@@ -1017,7 +1017,7 @@
def prop = ClassMember.Property (loc + group.Location, id, mods,
ret_type, prop_ty, parms, getter, setter);
- prop.BodyLocation = group.Location;
+ prop._bodyLocation = group.Location;
prop
| Token.Operator ("=") as toc =>
@@ -1034,7 +1034,7 @@
);
take_attributes_out (ref customs, System.AttributeTargets.Field, true, mods);
def result = ClassMember.Field (loc + last_tok.Location, id, mods, ret_type);
- result.BodyLocation = bodyLocation;
+ result._bodyLocation = bodyLocation;
result;
| Token.EndOfGroup =>
@@ -1044,7 +1044,8 @@
| t => Error (t, "expecting `;' or `{ }' in field / property declaration"); null
}
- when (res != null) res.Env = env;
+ when (res != null)
+ res._env = env;
res
}
@@ -1100,7 +1101,7 @@
def name = Splicable.Name (mloc, mkname (i + "_" + plain_name));
def fh = Fun_header (mloc, name, PExpr.Void (mloc), method_parms);
def method = ClassMember.Function (loc, name, method_atts, fh, kind, bd);
- method.Env = env;
+ method._env = env;
if (i == "remove")
remove = method;
else
@@ -1147,12 +1148,12 @@
def fh = Fun_header (loc, name, PExpr.Void (loc), method_parms);
// funbody is filled during typing
add = ClassMember.Function (loc, name, method_atts, fh, [], null);
- add.Env = env;
+ add._env = env;
def name = Splicable.Name (loc, mkname ("remove_" + plain_name));
def fh = Fun_header (loc, name, PExpr.Void (loc), method_parms);
remove = ClassMember.Function (loc, name, method_atts, fh, [], null);
- remove.Env = env;
+ remove._env = env;
ClassMember.Event (loc, id, mods, ret_type, field, add, remove)
Modified: nemerle/trunk/ncc/parsing/ParseTree.n
==============================================================================
--- nemerle/trunk/ncc/parsing/ParseTree.n (original)
+++ nemerle/trunk/ncc/parsing/ParseTree.n Sat Jan 20 14:11:54 2007
@@ -92,7 +92,7 @@
}
}
- [Record (Exclude = [Env, Tokens, BodyLocation, _definedIn])]
+ [Record (Exclude = [_env, _tokens, _bodyLocation, _definedIn])]
public variant ClassMember : DeclarationBase
{
| TypeDeclaration { td : TopDeclaration; }
@@ -117,9 +117,11 @@
}
| EnumOption { value : option [PExpr]; }
- public mutable Env : GlobalEnv;
- internal mutable Tokens : Token.BracesGroup;
- internal mutable BodyLocation : Location;
+ // It's prevent esers from fortuitous modification of Env property.
+ public SetEnv(env : GlobalEnv) : void { _env = env; }
+ [Accessor] internal mutable _env : GlobalEnv;
+ [Accessor] internal mutable _tokens : Token.BracesGroup;
+ [Accessor] internal mutable _bodyLocation : Location;
/// This property contain referens to TopDeclaration where defined this member.
[Accessor] internal mutable _definedIn : TopDeclaration;
Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n (original)
+++ nemerle/trunk/ncc/passes.n Sat Jan 20 14:11:54 2007
@@ -191,7 +191,7 @@
{
Instance = this;
assert (options != null);
- componentsFactory = instantiateComponentsFactory ();
+ componentsFactory = CreateComponentsFactory ();
ParsingPipeline = MainParser.Parse;
def scanner = ScanTypeHierarchy (this);
ScanningPipeline = scanner.ProcessDeclaration;
@@ -227,7 +227,7 @@
member.HasBeenAssigned = trigger_obsolete_warn;
}
- protected virtual instantiateComponentsFactory () : CompilerComponentsFactory
+ protected virtual CreateComponentsFactory () : CompilerComponentsFactory
{
CompilerComponentsFactory ()
}
@@ -472,21 +472,6 @@
}
}
- /// This method must be overridden in intellisece engine.
- /// It must obtain methode body code frome sorce. Parse it. And return result tokens.
- protected internal virtual PreParseMethodBody (_method : MethodBuilder)
- : Token.BracesGroup
- {
- throw System.NotImplementedException ();
- }
-
- /// This method must be overridden in intellisece engine.
- protected internal virtual SetCompiletMessages (_messages : SCG.List[CompilerMessage]) : void
- {
- throw System.NotImplementedException ();
- }
-
-
/// Return true if 'method' is extension method.
protected internal virtual IsExtensionMethod (method : IMethod, tyVar2 : TyVar) : bool
{
More information about the svn
mailing list