This was an interesting one! I've committed a fix for it. My regression test is

fun test 0 _ = () | test _ _ = raise Fail "wrong";

val () = let val xz = 1 in test 0xz end;
val () = let val wxz = 1 in test 0wxz end;
val () = let val xw9 = 1 in test 0xw9 end;
val () = let val x = 1 in test 0x; () end;

which I think covers the various cases.

Looking back, I found there was actually a fix for a very similar bug with real numbers where
val e = (1, 2);
#1e;
was failing because it was trying to parse this as a real constant.

The rules for when spaces are needed are a bit inconsistent. I often get caught out with the equals sign.
{x=nil} but not {x=#"a"}

Thanks for reporting it.
David

On 23/02/2015 12:37, Rob Arthan wrote:
I mistyped a word constant and was a bit surprised by the error message.

rda]- poly
Poly/ML 5.5.2 Release
0xw9;
Error-malformed integer constant: 0w
Static Errors

Contrast this with SML/NJ:

rda]- sml
Standard ML of New Jersey v110.76 [built: Mon Mar  3 16:26:20 2014]
- 0xw9;
stdIn:3.2-3.5 Error: unbound variable or constructor: xw9
stdIn:3.1-3.5 Error: operator is not a function [literal]
   operator: int
   in expression:
     0 <errorvar>

With the following contrived example:

fun f x y = print "Boo!"
val xw9 = "xw9";
f 0xw9;

Poly/ML reports a syntax error while SML/NJ and mlton both print Boo!

I am not sure who is right about this.

Regards,

Rob.



_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

_______________________________________________
polyml mailing list
[email protected]
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to