I've been doing a bulk replace of 'case..else' to 'case..otherwise' to eliminate possible ambiguities that have bitten me in the past, and have noticed something interesting under 2.6.4 on x86 Linux.

This is OK:

        Ord('.'): case shiftState of
                    unshifted: mechCode := Corr_88_Period;
                    shifted:
                  else
                  end;

This is an error:

        Ord('.'): case shiftState of
                    unshifted: mechCode := Corr_88_Period;
                    shifted:
                  otherwise
                  end;

I can fix it like this:

        Ord('.'): case shiftState of
                    unshifted: mechCode := Corr_88_Period;
                    shifted: ;
                  otherwise
                  end;

But that grates since I was brought up on ; being a statement separator rather than a terminator. Alternatively this is OK:

        Ord('.'): case shiftState of
                    unshifted: mechCode := Corr_88_Period;
                    shifted:
                  end;

but I like having the regular code (in some cases there are active otherwise clauses, and I spent enough time with Modula-2 to prefer enumerating all possibilities).

Is this difference expected, and what is the best workaround?

--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to