MLton MLTONWIKIVERSION

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 hully applied. To silence spurious messages, you can use `ignore e1`.

- `warnUnused {false|true}`
  Report unused identifiers.

## Next Steps

- MLBasisAnnotationExamples

Last edited on 2007-08-23 17:10:20 by MatthewFluet.