2011-11-22 16 views
24

Cuando prototipo de programas Haskell, siempre consigo cientos de avisos como este (no es broma):Cómo suprimir [temporalmente] las advertencias "definidas pero no utilizadas"?

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:70:15: 
    Warning: Defined but not used: `ta' 

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:72:15: 
    Warning: Defined but not used: `ta' 

/Users/bob/SourceCode/course/is/expriment/LiftedSpine2.hs:77:26: 
    Warning: Defined but not used: `v'

¿Hay alguna forma de eliminar estas advertencias temporalmente? He intentado poner esto en mi archivo .hs:

{-# OPTIONS_GHC -fno-warn-unused-binds -fno-warn-name-shadowing 
    -fwarn-monomorphism-restriction -fwarn-hi-shadowing 
#-} 

Por desgracia, no funciona, y aunque también probé a: establecer -fno-WARN-unused-une, que todavía no funciona.

¡Muchas gracias!

+0

Realmente me gustaría que la función 'OPTIONS_GHC' funcionara, pero no he tenido tiempo de seguir con la determinación del comportamiento exacto, la presentación de un ticket, etc. – sclv

Respuesta

28

Otra posibilidad, dependiendo de su situación: creo que puede prefijar los identificadores con un guión bajo para suprimir esta advertencia. Por lo tanto:

_x = 42 

no generará el aviso si _x no se utiliza.

+1

De hecho. ¿Por qué está pasando eso? –

8

Normalmente utilizo -w para suprimir todas las advertencias cuando quiero deshacerme de alguna advertencia de forma temporal.

+0

Pero luego pierdes otras advertencias que podrías haber querido para ver. –

+2

Sí, pero cuando elimino temporalmente las advertencias, es temporal, así que veré esas advertencias lo suficientemente rápido. – augustss

6

Puedo utilizar una solución para esto:

compilo sin advertencias, pero entonces yo uso HLint herramienta para mostrar advertencias para mí. HLint tiene instalaciones para activar las advertencias por separado.

15

GHC tiene dos banderas de advertencia que pueden disparar Warning: Defined but not used.

Necesita una combinación de los indicadores de línea de comando -fno-warn-unused-binds y -fno-warn-unused-matches.

+0

Si ejecuta 'hdevtools', debe anteponer' -g' para que funcionen de la siguiente manera: 'hdevtools check -g-Wall -g-Wall -g-fno-warn-unused-binds -g-fno-warn- unused-matches source.hs' –

Cuestiones relacionadas