No bug: \SetKwSwitch
requires nine arguments and you only supply eight of them so the \par
generated by the blank line is taken as ninth. And \par
is illegal in the context where the ninth argument is used.
\newcommand{\SetKwSwitch}[9]{% #1=\Switch #2=\Case #3=\Other #4=switch #5=do #6=case #7=otherwise #8=endcase #9=endsw
% \algocf@newcmdside{#1}{3}%
\algocf@newcmdside@koif{#1}%
{\KwSty{#4}\algocf@scond\ArgSty{##2}\algocf@econd\KwSty{#5}\ifArgumentEmpty{##1}\relax{ ##1}\algocf@block{##3}{#9} {##4\relax}}%
The manual has a description where the last (symbolic) argument is not braced, so there is a bug, but only in the documentation. On page 39, start of section 11.6, you read
\SetKwSwitch{Switch}{Case}{Other}{switch}{do}{case}{otherwise}{endcase}endsw
but it should be
\SetKwSwitch{Switch}{Case}{Other}{switch}{do}{case}{otherwise}{endcase}{endsw}
Fixed example:
\documentclass{article}
\usepackage{algorithm2e}
\SetKwSwitch{Switch}{Case}{Other}{Switch}{:}{Case}{Other}{EndCase}{EndSwitch}
\begin{document}
\begin{algorithm}
\Switch{X}{
\Case{1}{A}
\Other{Other}
}
\end{algorithm}
\end{document}
