matijapretnar/eff — pull request #7 by andrejbauer (2012-08-07 23:25:03+00:00)
Title: Reinstated lost functionality

Review code, and put back in functionality which got deleted:

1. Checks for shadowing of record field labels, constructors and operations. This MUST be done because without such checks we break type safety (the interpreter uses the names at runtime, so when they get shadowed, it finds the wrong ones).

2. Big_int is back, it is just sooo uncool not to have arbitrary-size integers in the 3rd millenium. Also, removing Big_int did not solve any problems. Even with int we cannot use ocaml = and < for comparison because operation instances need custom comparisons.

I also made ?pos mandatory in error reporting (so now it is ~pos). This works well, except for runtime errors, where it would be better not to have a position reported at all.

Pattern exhaustive checks are done badly. They should not be done inside infer, but *after* infer. This still needs fixed.