/usr/share/doc/mlton/guide/WarnUnusedAnomalies is in mlton-doc 20100608-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta name="robots" content="index,nofollow">
<title>WarnUnusedAnomalies - MLton Standard ML Compiler (SML Compiler)</title>
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="all" href="common.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="screen" href="screen.css">
<link rel="stylesheet" type="text/css" charset="iso-8859-1" media="print" href="print.css">
<link rel="Start" href="Home">
</head>
<body lang="en" dir="ltr">
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-833377-1";
urchinTracker();
</script>
<table bgcolor = lightblue cellspacing = 0 style = "border: 0px;" width = 100%>
<tr>
<td style = "
border: 0px;
color: darkblue;
font-size: 150%;
text-align: left;">
<a class = mltona href="Home">MLton MLTONWIKIVERSION</a>
<td style = "
border: 0px;
font-size: 150%;
text-align: center;
width: 50%;">
WarnUnusedAnomalies
<td style = "
border: 0px;
text-align: right;">
<table cellspacing = 0 style = "border: 0px">
<tr style = "vertical-align: middle;">
</table>
<tr style = "background-color: white;">
<td colspan = 3
style = "
border: 0px;
font-size:70%;
text-align: right;">
<a href = "Home">Home</a>
<a href = "TitleIndex">Index</a>
</table>
<div id="content" lang="en" dir="ltr">
The <tt>warnUnused</tt> <a href="MLBasisAnnotations">MLBasis annotation</a> can be used to report unused identifiers. This can be useful for catching bugs and for code maintenance (e.g., eliminating dead code). However, the <tt>warnUnused</tt> annotation can sometimes behave in counter-intuitive ways. This page gives some of the anomalies that have been reported.
<ul>
<li>
<p>
Functions whose only uses are recursive uses within their bodies are not warned as unused:
<pre class=code>
<B><FONT COLOR="#0000FF">local</FONT></B>
<B><FONT COLOR="#A020F0">fun</FONT></B> foo () = foo () : unit
<B><FONT COLOR="#A020F0">val</FONT></B> bar = <B><FONT COLOR="#A020F0">let</FONT></B> <B><FONT COLOR="#A020F0">fun</FONT></B> baz () = baz () : unit <B><FONT COLOR="#A020F0">in</FONT></B> baz <B><FONT COLOR="#A020F0">end</FONT></B>
<B><FONT COLOR="#0000FF">in</FONT></B>
<B><FONT COLOR="#0000FF">end</FONT></B>
</PRE>
</p>
<pre>Warning: z.sml 3.5.
Unused variable: bar.
</pre></li>
<li class="gap">
<p>
Components of actual functor argument that are necessary to match the functor argument signature but are unused in the body of the functor are warned as unused:
<pre class=code>
<B><FONT COLOR="#0000FF">functor</FONT></B> Warning (<B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> x : t) = <B><FONT COLOR="#0000FF">struct</FONT></B>
<B><FONT COLOR="#A020F0">val</FONT></B> y = x
<B><FONT COLOR="#0000FF">end</FONT></B>
<B><FONT COLOR="#0000FF">structure</FONT></B> X = Warning (<B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t </FONT></B>=<B><FONT COLOR="#228B22"> int </FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> x = <B><FONT COLOR="#5F9EA0">1</FONT></B>)
</PRE>
</p>
<pre>Warning: z.sml 4.29.
Unused type: t.
</pre></li>
<li class="gap">
<p>
No component of a functor result is warned as unused. In the following, the only uses of <tt>f2</tt> are to match the functor argument signatures of <tt>functor G</tt> and <tt>functor H</tt> and there are no uses of <tt>z</tt>:
<pre class=code>
<B><FONT COLOR="#0000FF">functor</FONT></B> F(<B><FONT COLOR="#0000FF">structure</FONT></B> X : <B><FONT COLOR="#0000FF">sig</FONT></B> <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>) = <B><FONT COLOR="#0000FF">struct</FONT></B>
<B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t </FONT></B>=<B><FONT COLOR="#228B22"> X.t
</FONT></B><B><FONT COLOR="#A020F0">fun</FONT></B> f1 (_ : X.t) = ()
<B><FONT COLOR="#A020F0">fun</FONT></B> f2 (_ : X.t) = ()
<B><FONT COLOR="#A020F0">val</FONT></B> z = ()
<B><FONT COLOR="#0000FF">end</FONT></B>
<B><FONT COLOR="#0000FF">functor</FONT></B> G(<B><FONT COLOR="#0000FF">structure</FONT></B> Y : <B><FONT COLOR="#0000FF">sig</FONT></B>
<B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t
</FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> f1 : t -> unit
<B><FONT COLOR="#A020F0">val</FONT></B> f2 : t -> unit
<B><FONT COLOR="#A020F0">val</FONT></B> z : unit
<B><FONT COLOR="#0000FF">end</FONT></B>) = <B><FONT COLOR="#0000FF">struct</FONT></B>
<B><FONT COLOR="#A020F0">fun</FONT></B> g (x : Y.t) = Y.f1 x
<B><FONT COLOR="#0000FF">end</FONT></B>
<B><FONT COLOR="#0000FF">functor</FONT></B> H(<B><FONT COLOR="#0000FF">structure</FONT></B> Y : <B><FONT COLOR="#0000FF">sig</FONT></B>
<B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t
</FONT></B><B><FONT COLOR="#A020F0">val</FONT></B> f1 : t -> unit
<B><FONT COLOR="#A020F0">val</FONT></B> f2 : t -> unit
<B><FONT COLOR="#A020F0">val</FONT></B> z : unit
<B><FONT COLOR="#0000FF">end</FONT></B>) = <B><FONT COLOR="#0000FF">struct</FONT></B>
<B><FONT COLOR="#A020F0">fun</FONT></B> h (x : Y.t) = Y.f1 x
<B><FONT COLOR="#0000FF">end</FONT></B>
<B><FONT COLOR="#0000FF">functor</FONT></B> Z() = <B><FONT COLOR="#0000FF">struct</FONT></B>
<B><FONT COLOR="#0000FF">structure</FONT></B> S = F(<B><FONT COLOR="#0000FF">structure</FONT></B> X = <B><FONT COLOR="#0000FF">struct</FONT></B> <B><FONT COLOR="#A020F0">type</FONT></B><B><FONT COLOR="#228B22"> t </FONT></B>=<B><FONT COLOR="#228B22"> unit </FONT></B><B><FONT COLOR="#0000FF">end</FONT></B>)
<B><FONT COLOR="#0000FF">structure</FONT></B> SG = G(<B><FONT COLOR="#0000FF">structure</FONT></B> Y = S)
<B><FONT COLOR="#0000FF">structure</FONT></B> SH = H(<B><FONT COLOR="#0000FF">structure</FONT></B> Y = S)
<B><FONT COLOR="#0000FF">end</FONT></B>
<B><FONT COLOR="#0000FF">structure</FONT></B> U = Z()
<B><FONT COLOR="#A020F0">val</FONT></B> _ = U.SG.g ()
<B><FONT COLOR="#A020F0">val</FONT></B> _ = U.SH.h ()
</PRE>
</p>
<pre></pre></li>
</ul>
</div>
<p>
<hr>
Last edited on 2007-11-01 18:32:19 by <span title="fenrir.uchicago.edu"><a href="MatthewFluet">MatthewFluet</a></span>.
</body></html>
|