To aid in the debugging of code produced by program generators such as Noweb, MLton supports comments with line directives of the form

(*#line l.c "f"*)

Here, l and c are sequences of decimal digits and f is the source file. The first character of a source file has the position 1.1. A line directive causes the front end to believe that the character following the right parenthesis is at the line and column of the specified file. A line directive only affects the reporting of error messages and does not affect program semantics (except for functions like MLton.Exn.history that report source file positions). Syntactically invalid line directives are ignored. To prevent incompatibilities with SML, the file name may not contain the character sequence *).