[svn] r7090: nemerle/trunk: macros/Internals.n
ncc/generation/HierarchyEmitter.n ncc/hierarchy/ClassMember...
VladD2
svnadmin at nemerle.org
Fri Dec 15 10:40:46 CET 2006
Log:
1. Rename ManagerClass.IsInCompletionMode property to IsIntelliSenseMode.
2. Add ManagerClass.IsCompletioInProgress property.
Author: VladD2
Date: Fri Dec 15 10:40:41 2006
New Revision: 7090
Modified:
nemerle/trunk/macros/Internals.n
nemerle/trunk/ncc/generation/HierarchyEmitter.n
nemerle/trunk/ncc/hierarchy/ClassMembers.n
nemerle/trunk/ncc/hierarchy/TypeBuilder.n
nemerle/trunk/ncc/parsing/MainParser.n
nemerle/trunk/ncc/parsing/Utility.n
nemerle/trunk/ncc/passes.n
nemerle/trunk/ncc/typing/Typer.n
Modified: nemerle/trunk/macros/Internals.n
==============================================================================
--- nemerle/trunk/macros/Internals.n (original)
+++ nemerle/trunk/macros/Internals.n Fri Dec 15 10:40:41 2006
@@ -58,7 +58,7 @@
| _ => ()
}
- when (Nemerle.Macros.ImplicitCTX().Manager.IsInCompletionMode)
+ when (Nemerle.Macros.ImplicitCTX().Manager.IsIntelliSenseMode)
{ // Add fake method whith body of field initialiser.
def n = "_N_field_initialiser__" + f.Name;
//Fixme: VladD2: I not understand how add NemerleAttributes.SpecialName to this method.
@@ -103,7 +103,7 @@
| _ => ()
}
- if (Nemerle.Macros.ImplicitCTX().Manager.IsInCompletionMode)
+ if (Nemerle.Macros.ImplicitCTX().Manager.IsIntelliSenseMode)
{} // Do nothing if is in completion mode.
// if we didn't end up with literal value, create assignment in constructor
else when (f.const_value == null) {
Modified: nemerle/trunk/ncc/generation/HierarchyEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/HierarchyEmitter.n (original)
+++ nemerle/trunk/ncc/generation/HierarchyEmitter.n Fri Dec 15 10:40:41 2006
@@ -65,13 +65,13 @@
_need_entry_point = true;
_entry_point = None ();
};
- unless (Manager.IsInCompletionMode)
+ unless (Manager.IsIntelliSenseMode)
System.AppDomain.CurrentDomain.TypeResolve += resolve_hack;
}
public Dispose () : void
{
- unless (Manager.IsInCompletionMode)
+ unless (Manager.IsIntelliSenseMode)
System.AppDomain.CurrentDomain.TypeResolve -= resolve_hack;
}
@@ -349,7 +349,7 @@
Iter (emit_impl);
// MaybeBailout inteferes with the Code Completion Engine
- unless (Manager.IsInCompletionMode)
+ unless (Manager.IsIntelliSenseMode)
Message.MaybeBailout ();
when (!aux_phase) _cgil_phase = 4;
Modified: nemerle/trunk/ncc/hierarchy/ClassMembers.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/ClassMembers.n (original)
+++ nemerle/trunk/ncc/hierarchy/ClassMembers.n Fri Dec 15 10:40:41 2006
@@ -66,11 +66,11 @@
{
get
{
- if (Manager.IsInCompletionMode)
+ if (Manager.IsIntelliSenseMode)
_ast
else
throw System.InvalidOperationException (
- "Ast accessible only if Manager.IsInCompletionMode is true.");
+ "Ast accessible only if Manager.IsIntelliSenseMode is true.");
}
}
@@ -87,7 +87,7 @@
protected this (par : TypeBuilder, ast : PT.ClassMember)
{
declaring_type = par;
- _ast = if (Manager.IsInCompletionMode) ast else null;
+ _ast = if (Manager.IsIntelliSenseMode) ast else null;
Env = ast.Env;
loc = ast.loc;
modifiers = ast.modifiers;
@@ -421,7 +421,7 @@
/// Parsed representation (AST) of field.
/// Note: available only in CompletionMode
- /// (if Manager.IsInCompletionMode = true)
+ /// (if Manager.IsIntelliSenseMode = true)
public new Ast : PT.ClassMember.Field { get { base.Ast :> PT.ClassMember.Field } }
public this (par : TypeBuilder, fieldAst : PT.ClassMember.Field)
@@ -552,7 +552,7 @@
/// Parsed representation (AST) of property.
/// Note: available only in CompletionMode
- /// (if Manager.IsInCompletionMode = true)
+ /// (if Manager.IsIntelliSenseMode = true)
public new Ast : PT.ClassMember.Property { get { base.Ast :> PT.ClassMember.Property } }
public this (par : TypeBuilder, propertyAst : PT.ClassMember.Property)
@@ -694,7 +694,7 @@
/// Parsed representation (AST) of function.
/// Note: available only in CompletionMode
- /// (if Manager.IsInCompletionMode = true)
+ /// (if Manager.IsIntelliSenseMode = true)
public new Ast : PT.ClassMember.Function { get { base.Ast :> PT.ClassMember.Function } }
public GetMethodBase () : SR.MethodBase
@@ -799,7 +799,7 @@
{
//Trace.WriteLine($"$_indent>>>> ##### BodyTokens ($Name)!");
Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsInCompletionMode);
+ Trace.Assert(Manager.IsIntelliSenseMode);
when (_bodyTokens == null)
{
//def indent = _indent; _indent += " ";
@@ -824,7 +824,7 @@
{
//Trace.WriteLine($"$_indent>>>> ##### BodyParsed ($Name)!");
Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsInCompletionMode);
+ Trace.Assert(Manager.IsIntelliSenseMode);
when (_bodyParsed == null)
{
//def indent = _indent; _indent += " ";
@@ -849,7 +849,7 @@
Manager.CheckSolver();
//Trace.WriteLine($"$_indent>>>> ##### BodyTyped ($Name)!");
Trace.Assert(!(Attributes %&& NemerleAttributes.Abstract || BodyLocation.FileIndex <= 0));
- Trace.Assert(Manager.IsInCompletionMode);
+ Trace.Assert(Manager.IsIntelliSenseMode);
when (_bodyTyped == null)
{
//def indent = _indent; _indent += " ";
@@ -1100,7 +1100,7 @@
loc = f.header.loc);
fun_header.body = fun_body;
- when (Manager.IsInCompletionMode)
+ when (Manager.IsIntelliSenseMode)
_bodyTokens = f.Tokens;
unless (check_variance_valid (fun_header.ret_type.Fix(), 1))
@@ -1318,7 +1318,7 @@
/// Parsed representation (AST) of event.
/// Note: available only in CompletionMode
- /// (if Manager.IsInCompletionMode = true)
+ /// (if Manager.IsIntelliSenseMode = true)
public new Ast : PT.ClassMember.Event { get { base.Ast :> PT.ClassMember.Event } }
public this (par : TypeBuilder, eventAst : PT.ClassMember.Event) {
Modified: nemerle/trunk/ncc/hierarchy/TypeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/hierarchy/TypeBuilder.n (original)
+++ nemerle/trunk/ncc/hierarchy/TypeBuilder.n Fri Dec 15 10:40:41 2006
@@ -83,7 +83,7 @@
{
get
{
- System.Diagnostics.Trace.Assert(Manager.IsInCompletionMode);
+ System.Diagnostics.Trace.Assert(Manager.IsIntelliSenseMode);
pt_tydecl :: partial_parts
}
}
@@ -1866,7 +1866,7 @@
}
// we no longer need it, let GC kill it
- unless (Manager.IsInCompletionMode)
+ unless (Manager.IsIntelliSenseMode)
{
pt_tydecl = null;
partial_parts = null;
Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n (original)
+++ nemerle/trunk/ncc/parsing/MainParser.n Fri Dec 15 10:40:41 2006
@@ -819,7 +819,7 @@
loc += brac.Location;
// we skip body parsing in completion mode,
// to save time and ignore errors
- if (Manager.IsInCompletionMode)
+ if (Manager.IsIntelliSenseMode)
{
bodyTokens = brac;
FunBody.Parsed (PExpr.Sequence (brac.Location, []))
@@ -831,7 +831,7 @@
loc += tok.Location;
FunBody.Abstract ()
| Token.Operator ("$") =>
- System.Diagnostics.Trace.Assert(!Manager.IsInCompletionMode);
+ System.Diagnostics.Trace.Assert(!Manager.IsIntelliSenseMode);
def expr = parse_spliced_expr ();
loc += expr.Location;
def result = FunBody.Parsed (expr);
@@ -844,7 +844,7 @@
def member = ClassMember.Function (header = h, name = h.name, modifiers = modifiers,
loc = loc, body = body, kind = FunKind.Method (impl));
member.Env = env;
- when (Manager.IsInCompletionMode)
+ when (Manager.IsIntelliSenseMode)
member.Tokens = bodyTokens;
member
}
Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n (original)
+++ nemerle/trunk/ncc/parsing/Utility.n Fri Dec 15 10:40:41 2006
@@ -326,7 +326,7 @@
if (s.IsEmpty)
Location.Default
else
- if (Manager.IsInCompletionMode)
+ if (Manager.IsIntelliSenseMode)
s [s.Count - 1].AsGenerated ()
else
s [s.Count - 1]
Modified: nemerle/trunk/ncc/passes.n
==============================================================================
--- nemerle/trunk/ncc/passes.n (original)
+++ nemerle/trunk/ncc/passes.n Fri Dec 15 10:40:41 2006
@@ -261,9 +261,12 @@
ProgressBar (10 + current_tyinfo_count * 90 / tyinfo_counter);
}
- protected mutable _isInCompletionMode : bool = false;
-
- public IsInCompletionMode : bool { get { _isInCompletionMode } }
+ /// True if compiler runing in IntelliSense mode. This disable some
+ /// optimisations and anable lazy methods bodies compilation.
+ [Accessor] protected mutable _isIntelliSenseMode : bool = false;
+ /// True if now completion word in progress. This enable additional checks
+ /// of completion tokens.
+ [Accessor] protected mutable _isCompletioInProgress : bool = false;
ProgressBar (stage : int) : void
{
Modified: nemerle/trunk/ncc/typing/Typer.n
==============================================================================
--- nemerle/trunk/ncc/typing/Typer.n (original)
+++ nemerle/trunk/ncc/typing/Typer.n Fri Dec 15 10:40:41 2006
@@ -208,7 +208,7 @@
solver.InUse = false;
}
- when (Manager.IsInCompletionMode)
+ when (Manager.IsIntelliSenseMode)
try {
assert (!solver.InUse);
assert (solver.IsTopLevel);
@@ -385,7 +385,7 @@
def t2 = Typer2 (current_type, meth);
t2.Run ();
- unless (Manager.IsInCompletionMode) {
+ unless (Manager.IsIntelliSenseMode) {
def t3 = Typer3 (meth);
t3.Run ();
}
@@ -1147,13 +1147,14 @@
DoType (expression : PT.PExpr, expected : TyVar, is_toplevel_in_seq : bool) : TExpr
{
- assert(true);
- match (expression)
+ when (Manager.IsCompletioInProgress)
{
- | PT.PExpr.Member (_, PT.Splicable.HalfId (_)) | PT.PExpr.ToComplete (_) =>
+ assert(true);
Manager.Complete (expression, expected, this, env);
- throw System.NotImplementedException ();
+ }
+ match (expression)
+ {
| PT.PExpr.ParmByRef
| PT.PExpr.ParmOut =>
ReportFatal (messenger,
@@ -1713,6 +1714,9 @@
| PT.PExpr.TypedPattern =>
Util.ice ("typed pattern in raw expr")
+
+ | PT.PExpr.ToComplete =>
+ Util.ice ("The completion tokens allowed only if Manager.IsCompletioInProgress is true.")
}
}
#endregion
@@ -2370,7 +2374,7 @@
{
match (TypeMember (obj, name, expected)) {
| Some ([]) =>
- if (Manager.IsInCompletionMode) {
+ if (Manager.IsIntelliSenseMode) {
TExpr.Error()
}
else
@@ -3272,7 +3276,7 @@
PopLocals ();
}
} else if (ns.Equals (Manager.Typer_yield_macro)) {
- when (!inside_yielding_function && !Manager.IsInCompletionMode) {
+ when (!inside_yielding_function && !Manager.IsIntelliSenseMode) {
_ = GetYieldType ();
log (TYPING, "throwing STY");
throw SwitchToYielding ();
More information about the svn
mailing list