MISRA rule check 12.2

I have enabled MISRA rule checks and can find no way to avoid a rule 12.2 fault.

I have an enumerated type with values 0 to 4.

typedef enum eTokens
{
    MAIN_START = 0,
    MAIN_ANAL,
    MAIN_SYCK,
    MAIN_NVFL,
    MAIN_TOKEN_COUNT
}    tTokens;

if I do this

void SetToken( tTokens val)

{

unsigned char i;

i = 1u<<val;

}

This generates the following error.

Rule 12.2: The right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operand

 How can I avoid this error? The type is inherently within the allowed range.