MLton 20051202

MLBasisAnnotations

Home Index

ML Basis annotations control options that affect the elaboration of SML source files. Conceptually, a basis file is elaborated in a default annotation environment (just as it is elaborated in an empty basis). The declaration `ann` `"`ann`"``in` basdec `end` merges the annotation ann with the "current" annotation environment for the elaboration of basdec. To allow for future expansion, `"`ann`"` is lexed as a single SML string constant. To conveniently specify multiple annotations, the following derived form is provided:

`ann` `"`ann`"``` (`"`ann`"`)+`in` basdec `end``==>` `ann` `"`ann`"``in ann` (`"`ann`"`)+`in` basdec `end` `end`

Here are the available annotations. In the explanation below, for annotations that take an argument, the first value listed is the default.

`allowFFI {false|true}`

If `true`, allow `_address`, `_export`, `_import`, and `_symbol` expressions to appear in source files. See ForeignFunctionInterface.

`forceUsed`

Force all identifiers in the basis denoted by the body of the `ann` to be considered used; use in conjunction with `warnUnused true`.

`nonexhaustiveExnMatch {default|ignore}`

If `ignore`, suppress errors and warnings about nonexhaustive matches that arise solely from unmatched exceptions. If `default`, follow the behavior of `nonexhaustiveMatch`.

`nonexhaustiveMatch {warn|error|ignore}`

If `error` or `warn`, report nonexhaustive matches. An error will abort a compile, while a warning will not.

`redundantMatch {warn|error|ignore}`

If `error` or `warn`, report redundant matches. An error will abort a compile, while a warning will not.

`sequenceNonUnit {ignore|error|warn}`

If `error` or `warn`, report when `e1` is not of type `unit` in the sequence expression `(e1; e2)`. This can be helpful in detecting curried applications that are mistakenly not fully applied. To silence spurious messages, you can use `ignore e1`.

`warnUnused {false|true}`

Report unused identifiers.

## Next Steps

- MLBasisAnnotationExamples

Last edited on 2005-12-01 19:50:46 by StephenWeeks.