Subject: bug#75964: Switching the Emacs build to -Wswitch-enum in src/

From: Eli Zaretskii <[email-masked]>
Date: Mon, 03 Feb 2025 14:18:16 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked],
>   [email-masked],  [email-masked],  Andrea Corallo
>  <[email-masked]>
> Date: Sun, 02 Feb 2025 22:01:23 -0500
> 
> > 	      switch (bidi_it->type)
> > 		{
> > 		case STRONG_L:
> > 		  flag = ((embedding_level & 1) == 0
> > 			  ? FLAG_EMBEDDING_INSIDE
> > 			  : FLAG_OPPOSITE_INSIDE);
> > 		  l2r_seen = true;
> > 		  break;
> > 		case STRONG_R:
> > 		case WEAK_EN:
> > 		case WEAK_AN:
> > 		  flag = ((embedding_level & 1) == 1
> > 			  ? FLAG_EMBEDDING_INSIDE
> > 			  : FLAG_OPPOSITE_INSIDE);
> > 		  r2l_seen = true;
> > 		  break;
> > 		case UNKNOWN_BT:
> > 		case WEAK_BN:
> > 		case NEUTRAL_B:
> > 		case STRONG_AL:
> > 		case LRE:
> > 		case LRO:
> > 		case RLE:
> > 		case RLO:
> > 		case PDF:
> > 		case LRI:
> > 		case RLI:
> > 		case FSI:
> > 		case PDI:
> > 		case WEAK_ES:
> > 		case WEAK_ET:
> > 		case WEAK_CS:
> > 		case WEAK_NSM:
> > 		case NEUTRAL_S:
> > 		case NEUTRAL_WS:
> > 		case NEUTRAL_ON:
> > 		default: 		  break;
> > 		}
> >
> > I think that could be rewritten to be more readable in a number of ways,
> 
> The most obvious one is to remove all the `case ..:` just before `default:`.

That's what the current code does:

	      switch (bidi_it->type)
		{
		case STRONG_L:
		  flag = ((embedding_level & 1) == 0
			  ? FLAG_EMBEDDING_INSIDE
			  : FLAG_OPPOSITE_INSIDE);
		  l2r_seen = true;
		  break;
		case STRONG_R:
		case WEAK_EN:
		case WEAK_AN:
		  flag = ((embedding_level & 1) == 1
			  ? FLAG_EMBEDDING_INSIDE
			  : FLAG_OPPOSITE_INSIDE);
		  r2l_seen = true;
		  break;
		default:
		  break;
		}