Introduce show warning flag.

Close #1267.
let's have a !SHOW_WARNINGS return block so the nesting doesn't get too crazy