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,
}    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.