Irrelevant variables in patterns

Christophe Raffalli (cr@dcs.ed.ac.uk)
Mon, 30 May 1994 17:57:00 +0000

Date: Mon, 30 May 1994 17:57:00 +0000
Message-Id: <2283.9405301657@whalsay.dcs.ed.ac.uk>
From: Christophe Raffalli <cr@dcs.ed.ac.uk>
To: Xavier.Leroy@inria.fr
In-Reply-To: <9405300853.AA03760@pauillac.inria.fr> (Xavier.Leroy@inria.fr)
Subject: Irrelevant variables in patterns

> Ce n'est pas un bug lorsqu'on veut faire de la "finalisation":

Cela signifie que l'on doit avoir un warning quand on capture toute les
exceptions et que l'on ne les "reraisent" pas

ex:

let oc = open_out "foo" in
try
...;
close_out oc
with exc ->
close_out oc;
sys__remove "foo";
raise exc

pas de warning ...

let oc = open_out "foo" in
try
...;
close_out oc
with exc ->
myclose "foo" exc

pas de warning (je ne sais pas vraiment) ? Si l'on ne mets pas de warning dans
ce cas, Chet sera content, car son example n'en produira pas.

let oc = open_out "foo" in
try
...;
close_out oc
with exc ->
myclose "foo"

un warning.

let oc = open_out "foo" in
try
...;
close_out oc
with _ ->
myclose "foo"

une erreur ! (de maniere generale le "_" ne devrait pas etre autoriser pour les
exceptions).

cela devrait attrapper quelques bugs.

Cela serait vraiment bien (pour moi) si la prochaine version de caml-light
pouvait avoir des warnings bien pense de ce type que l'on peut activer par une
option de compilation.

Les deux warnings que je voudrais vraiment pouvoir activier (ce genre de
warning devrait plutot est inactif par defaut ?) sont:

- variables non utilisees (pattern ou definition de function)
- capture de toutes les exceptions sans chances de les relever.