Skip to content

Commit

Permalink
tentatively change error location for wrong number of args to where f…
Browse files Browse the repository at this point in the history
…unction called, not where it's defined
  • Loading branch information
pzinn committed Jul 18, 2024
1 parent d83fd87 commit 0a863d9
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 30 deletions.
32 changes: 16 additions & 16 deletions M2/Macaulay2/d/actors3.d
Original file line number Diff line number Diff line change
Expand Up @@ -1328,7 +1328,7 @@ map(a1:Sequence,a2:Sequence,f:Expr):Expr := (
Expr(ret)
)
else ( -- (x,y) -> ...
if numparms != 2 then WrongNumArgs(Code(model),numparms,2)
if numparms != 2 then WrongNumArgs1(numparms,2)
else (
saveLocalFrame := localFrame;
values := new Sequence len framesize do provide nullE;
Expand Down Expand Up @@ -1455,7 +1455,7 @@ map(a:Sequence,f:Expr):Expr := (
when arg is args:Sequence do (
if 1 == length(args) then values.0 = args.0
else (
errret = WrongNumArgs(Code(model),numparms,length(args));
errret = WrongNumArgs1(numparms,length(args));
while true do provide nullE;
)
)
Expand All @@ -1482,7 +1482,7 @@ map(a:Sequence,f:Expr):Expr := (
when arg is args:Sequence do (
if 1 == length(args) then values.0 = args.0
else (
errret = WrongNumArgs(Code(model),numparms,length(args));
errret = WrongNumArgs1(numparms,length(args));
while true do provide nullE;
)
)
Expand Down Expand Up @@ -1521,12 +1521,12 @@ map(a:Sequence,f:Expr):Expr := (
foreach arg in a do (
when arg is args:Sequence do (
if 0 != length(args) then (
errret = WrongNumArgs(Code(model),0,length(args));
errret = WrongNumArgs1(0,length(args));
while true do provide nullE;
)
)
else (
errret = WrongNumArgs(Code(model),numparms,1);
errret = WrongNumArgs1(numparms,1);
while true do provide nullE;
);
tmp := eval(body);
Expand Down Expand Up @@ -1560,12 +1560,12 @@ map(a:Sequence,f:Expr):Expr := (
foreach x at i in args do values.i = x;
)
else (
errret=WrongNumArgs(Code(model),numparms,length(args));
errret=WrongNumArgs1(numparms,length(args));
while true do provide nullE;
)
)
else (
errret = WrongNumArgs(Code(model),numparms,1);
errret = WrongNumArgs1(numparms,1);
while true do provide nullE;
);
tmp := eval(body);
Expand Down Expand Up @@ -1644,7 +1644,7 @@ map(newlen:int,f:Expr):Expr := (
numparms := desc.numparms;
framesize := desc.framesize;
if numparms != 1 then (
errret = WrongNumArgs(Code(model),numparms,1);
errret = WrongNumArgs1(numparms,1);
while true do provide nullE;
)
else (
Expand Down Expand Up @@ -1831,7 +1831,7 @@ scan(n:int,f:Expr):Expr := (
framesize := desc.framesize;
if numparms != 1 then (
recursionDepth = recursionDepth - 1;
return WrongNumArgs(Code(model),numparms,1);
return WrongNumArgs1(numparms,1);
);
if framesize == 1 then (
values := new Sequence len framesize do provide nullE;
Expand Down Expand Up @@ -1963,7 +1963,7 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),numparms,length(args));
return WrongNumArgs1(numparms,length(args));
)
)
else values.0 = arg;
Expand All @@ -1989,7 +1989,7 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),numparms,length(args));
return WrongNumArgs1(numparms,length(args));
)
)
else values.0 = arg;
Expand Down Expand Up @@ -2018,13 +2018,13 @@ scan(a:Sequence,f:Expr):Expr := (
if 0 != length(args) then (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),0,length(args));
return WrongNumArgs1(0,length(args));
)
)
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),numparms,1);
return WrongNumArgs1(numparms,1);
);
tmp := eval(body);
when tmp is err:Error do (
Expand All @@ -2046,13 +2046,13 @@ scan(a:Sequence,f:Expr):Expr := (
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),numparms,length(args));
return WrongNumArgs1(numparms,length(args));
)
)
else (
recursionDepth = recursionDepth - 1;
localFrame = saveLocalFrame;
return WrongNumArgs(Code(model),numparms,1);
return WrongNumArgs1(numparms,1);
);
tmp := eval(body);
when tmp is err:Error do (
Expand Down Expand Up @@ -2158,7 +2158,7 @@ scan(a1:Sequence,a2:Sequence,f:Expr):Expr := (
recursionDepth = recursionDepth - 1;
nullE)
else ( -- (x,y) -> ...
if numparms != 2 then WrongNumArgs(Code(model),numparms,2)
if numparms != 2 then WrongNumArgs1(numparms,2)
else (
saveLocalFrame := localFrame;
values := new Sequence len framesize do provide nullE;
Expand Down
20 changes: 7 additions & 13 deletions M2/Macaulay2/d/evaluate.d
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export isEmptySequenceE(e:Expr):bool := (
);
printErrorMessageE(p:Position,message:Expr):Expr;
printErrorMessage(p:Position,message:string):Expr; -- ???
WrongNumArgs(c:Code,wanted:int,got:int):Expr;
WrongNumArgs1(wanted:int,got:int):Expr;
export printErrorMessageE(c:Code,message:string):Expr := printErrorMessageE(codePosition(c),toExpr(message));
export printErrorMessageE(c:Code,message:Expr):Expr := printErrorMessageE(codePosition(c),message);
export printErrorMessageE(c:Token,message:string):Expr := ( -- for use when we have no code
Expand Down Expand Up @@ -552,7 +552,7 @@ export applyFCS(c:FunctionClosure,v:Sequence):Expr := (
)
)
else if desc.numparms != length(v)
then WrongNumArgs(Code(model),desc.numparms,length(v))
then WrongNumArgs1(desc.numparms,length(v))
else (
if framesize == 0 then (
saveLocalFrame := localFrame;
Expand Down Expand Up @@ -849,7 +849,7 @@ export applyFCCS(c:FunctionClosure,cs:CodeSequence):Expr := (
else applyFCS(c,v)
)
else if desc.numparms != length(cs)
then WrongNumArgs(Code(model),desc.numparms,length(cs))
then WrongNumArgs1(desc.numparms,length(cs))
else (
previousFrame := c.frame;
framesize := desc.framesize;
Expand Down Expand Up @@ -980,7 +980,7 @@ export applyEEE(g:Expr,e0:Expr,e1:Expr):Expr := (
if desc.restargs
then applyFCS(c,Sequence(e0,e1))
else if desc.numparms != 2
then WrongNumArgs(Code(model),desc.numparms,2)
then WrongNumArgs1(desc.numparms,2)
else if recursionDepth > recursionLimit then RecursionLimit()
else (
previousFrame := c.frame;
Expand Down Expand Up @@ -1049,7 +1049,7 @@ export applyEEEE(g:Expr,e0:Expr,e1:Expr,e2:Expr):Expr := (
if desc.restargs
then applyFCS(c,Sequence(e0,e1,e2))
else if desc.numparms != 3
then WrongNumArgs(Code(model),desc.numparms,3)
then WrongNumArgs1(desc.numparms,3)
else if recursionDepth > recursionLimit then RecursionLimit()
else (
previousFrame := c.frame;
Expand Down Expand Up @@ -1369,15 +1369,9 @@ export printErrorMessage(p:Position,message:Expr):Expr := ( -- for use when we h
e := Error(p,message,nullE,false,dummyFrame);
printError(e);
Expr(e));
export WrongNumArgs(c:Code,wanted:int,got:int):Expr := (
printErrorMessageE(c, "expected " + tostring(wanted) + " argument"
export WrongNumArgs1(wanted:int,got:int):Expr := Expr(Error(dummyPosition,toExpr("expected " + tostring(wanted) + " argument"
+ (if wanted == 1 then "" else "s") + ", but got "
+ tostring(got)));
export WrongNumArgs(c:Token,wanted:int,got:int):Expr := (
printErrorMessageE(c, "expected " + tostring(wanted) + " argument"
+ (if wanted == 1 then "" else "s") + ", but got "
+ tostring(got)));

+ tostring(got)),nullE,false,dummyFrame));

export handleError(c:Code,e:Expr):Expr := (
when e is err:Error do (
Expand Down
2 changes: 1 addition & 1 deletion M2/Macaulay2/tests/normal/capture.m2
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ o2 : Matrix K <-- K\n" | ".*", out))

-- printing errors
(err, out) = capture "1/0"
assert(err and match("\\A\ni1 : 1/0\ncurrentString:1:2:\\(3\\):\\[.\\]: error: division by zero\n\\Z", out))
assert(err and match("\\A\ni1 : 1/0\ncurrentString:1:1:\\(3\\):\\[.\\]: error: division by zero\n\\Z", out))

-- make sure runaway existing private symbols are not changed
-- TODO: how can we prevent new methods or hooks from escaping capture?
Expand Down

0 comments on commit 0a863d9

Please sign in to comment.