Revision: 8436
Author:
v...@rsdn.ru
Date: Tue Nov 17 11:05:07 2009
Log: Working on Integration: Fix completion in "match" argument.
http://code.google.com/p/nemerle/source/detail?r=8436
Modified:
/nemerle/trunk/VsIntegration/Nemerle.Compiler.Utils/Nemerle.Completion2/CompilerConcreteDefinitions/IntelliSenseModeMethodBuilder.n
/nemerle/trunk/ncc/parsing/MainParser.n
=======================================
---
/nemerle/trunk/VsIntegration/Nemerle.Compiler.Utils/Nemerle.Completion2/CompilerConcreteDefinitions/IntelliSenseModeMethodBuilder.n
Wed Oct 28 21:02:28 2009
+++
/nemerle/trunk/VsIntegration/Nemerle.Compiler.Utils/Nemerle.Completion2/CompilerConcreteDefinitions/IntelliSenseModeMethodBuilder.n
Tue Nov 17 11:05:07 2009
@@ -230,7 +230,11 @@
_bodyTyped = (fun_header.body :> FunBody.Typed).expr;
}
catch
- { | e => BodyMessages.Add(CompilerMessageForMethod(BodyLocation,
+ { | e =>
+ def bLoc = BodyLocation;
+ // make location on open bracket...
+ def loc = Location(bLoc.FileIndex, bLoc.Line, bLoc.Column,
bLoc.Line + 1, 1);
+ BodyMessages.Add(CompilerMessageForMethod(loc,
$"Exception:$(e.Message)", MessageKind.Error, Manager,
false, this));
}
finally
=======================================
--- /nemerle/trunk/ncc/parsing/MainParser.n Tue Oct 6 04:01:10 2009
+++ /nemerle/trunk/ncc/parsing/MainParser.n Tue Nov 17 11:05:07 2009
@@ -2772,33 +2772,40 @@
| Token.Keyword ("match") =>
def (expr, expr_loc) =
- match (get_token ()) {
+ match (get_token ())
+ {
| Token.RoundGroup (group) as whole when group != null =>
loc = loc + whole.Location;
(
- match (parse_expr_sequence (group, [])) {
+ match (parse_expr_sequence (group, []))
+ {
| [x] => x
| [] => fatal_error (group.Location, "expecting
expression inside `match (..)'");
| xs => PExpr.Tuple.Create (loc, xs.Reverse ())
- }
- ,
+ },
whole.Location
)
| x => (fatal_error (x, "expecting non-empty `(..)' after
`match'"), Location.Default);
- }
- match (get_token ()) {
+ };
+
+ match (get_token ())
+ {
| Token.BracesGroup (Token.LooseGroup (Token.Operator
("..")) as group, _) =>
push_stream (group);
- match (maybe_parse_ellipsis ()) {
+ match (maybe_parse_ellipsis ())
+ {
| Some (e) =>
pop_stream ("match body");
PExpr.Match (loc, expr, [MatchCase ([], e)], expr_loc);
| _ => Util.ice ()
}
+
| Token.BracesGroup (group, _) as tok =>
PExpr.Match (loc.Combine(tok.Location), expr,
process_groups (group, "match body", parse_match_case), expr_loc)
- | x => fatal_error (x, "expecting '{' after 'match (e)'");
+ | x =>
+ Message.Error (x.Location, "expecting '{' after 'match
(e)'");
+ expr // return test expression for the Completion work well
}
| Token.Keyword ("try") =>