When there are many nested switch statements, then the compiler does not
recognize bogus labels such as spelling mistakes like 'delault' instead of
'default', and goes on to generate code. Even with -Wall, no warning is
generated. However these stupidities(spelling mistakes) are recognized and
warnings to that effect are emitted in programs such as these:


#include <cstdlib>
int
main()
{
  int r = rand();
  int s = 0;

  switch (s)
    {
    case 0:
      switch(r)
        {
        case 1:
          s = 2;
          break;
          
        case 2:
          s = 7;
          break;
          
        defauft:
          s = 9;
        }
    default:
      r = 9;
    }
}

swtest.cpp: In function `int main()':
swtest.cpp:21: warning: label `defauft' defined but not used

-Dhruv.

-- 
           Summary: No warning emitted for nested switch statements.
           Product: gcc
           Version: 4.0.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P2
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dhruvbird at yahoo dot com
                CC: gcc-bugs at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19941

Reply via email to