I encountered same problem.
I think it happens if parser rule has a part of simple OR-ed token like this:
problem_case: problematic_rule;
problematic_rule: 'A' | 'B' ;
This doesn't happen if it is lexer rule.
workaround1: As_lexer_rule;
As_lexer_rule: 'A' | 'B' ;
Or, if it is complicated rule (not simple OR-ed token).
workaround2: make_it_complicated_needlessly;
make_it_complicated_needlessly: 'A' | 'B' | {false}? NeverUsedRule;
NeverUsedRule: /* don't care*/ ;
( I used semantic predicate "{false}?" for this modification. I believe it doesn't change the grammar of target language.)