[svn] r7111: nemerle/trunk/ncc/typing: Messenger.n TyVar.n
malekith
svnadmin at nemerle.org
Sun Dec 17 16:49:47 CET 2006
Log:
Improve error messages a bit. Resolves #811.
Author: malekith
Date: Sun Dec 17 16:49:46 2006
New Revision: 7111
Modified:
nemerle/trunk/ncc/typing/Messenger.n
nemerle/trunk/ncc/typing/TyVar.n
Modified: nemerle/trunk/ncc/typing/Messenger.n
==============================================================================
--- nemerle/trunk/ncc/typing/Messenger.n (original)
+++ nemerle/trunk/ncc/typing/Messenger.n Sun Dec 17 16:49:46 2006
@@ -41,7 +41,7 @@
mutable previous : Messenger;
mutable in_error_mode : bool;
mutable saved_error : string;
- mutable local_error : bool;
+ mutable local_error : int;
CopyFrom (other : Messenger) : void
@@ -68,7 +68,7 @@
saved_error = null;
need_message = false;
throw_on_error = false;
- local_error = false;
+ local_error = 0;
}
@@ -91,7 +91,7 @@
assert (NeedMessage);
seen_error = true;
- local_error = true;
+ local_error++;
when (first_error == null)
first_error = msg;
@@ -117,7 +117,7 @@
public CleanLocalError () : void
{
- local_error = false;
+ local_error = 0;
when (saved_error != null) {
Message.Error ($ "during cleanup: $saved_error");
saved_error = null;
@@ -133,7 +133,7 @@
when (!in_error_mode)
throw RestartInErrorMode ();
- local_error = true;
+ local_error++;
seen_error = true;
saved_error = msg;
}
@@ -157,7 +157,7 @@
when (previous == null && !in_error_mode)
throw RestartInErrorMode ();
- local_error = true;
+ local_error++;
seen_error = true;
}
@@ -197,6 +197,12 @@
public LocalError : bool
{
+ get { local_error != 0 }
+ }
+
+
+ public LocalErrorCount : int
+ {
get { local_error }
}
#endregion
Modified: nemerle/trunk/ncc/typing/TyVar.n
==============================================================================
--- nemerle/trunk/ncc/typing/TyVar.n (original)
+++ nemerle/trunk/ncc/typing/TyVar.n Sun Dec 17 16:49:46 2006
@@ -190,6 +190,7 @@
else if (IsFresh) {
Alias (t)
} else {
+ def prev = LocalErrorCount;
assert (IsFree);
when (Alias (t)) {
when (lower_bound != null)
@@ -202,7 +203,7 @@
SetUpperBound (t);
}
- !LocalError
+ prev == LocalErrorCount
}
}
@@ -610,6 +611,8 @@
if (low : object == high : object || high.IsIn (low.upper_tyvars))
true
else {
+ def prev = LocalErrorCount;
+
low.WillWrite ();
high.WillWrite ();
@@ -692,7 +695,7 @@
_ = low.Provide (high.upper_bound);
}
- !LocalError
+ prev == LocalErrorCount
}
}
@@ -850,6 +853,8 @@
$ "the `null' literal is not a valid value of type $low");
false
} else {
+ def prev = LocalErrorCount;
+
if (rev) {
def new_bound = Manager.Solver.Sum (high.upper_bound, low);
log (SOLVER, $ "new_bound=$new_bound ($(high.upper_bound) X $low) $LocalError");
@@ -902,7 +907,7 @@
// Message.Debug ($"error=$(LocalError)");
- !LocalError
+ prev == LocalErrorCount
}
}
@@ -1019,6 +1024,12 @@
{
get { Manager.Solver.CurrentMessenger.LocalError }
}
+
+
+ LocalErrorCount : int
+ {
+ get { Manager.Solver.CurrentMessenger.LocalErrorCount }
+ }
#endregion
More information about the svn
mailing list