diff --git a/tool/src/org/antlr/v4/codegen/model/Choice.java b/tool/src/org/antlr/v4/codegen/model/Choice.java index 478334147..af544d491 100644 --- a/tool/src/org/antlr/v4/codegen/model/Choice.java +++ b/tool/src/org/antlr/v4/codegen/model/Choice.java @@ -77,14 +77,13 @@ public abstract class Choice extends RuleElement { return altLook; } - public SrcOp addCodeForLookaheadTempVar(IntervalSet look) { + public TestSetInline addCodeForLookaheadTempVar(IntervalSet look) { List testOps = factory.getLL1Test(look, ast); - SrcOp expr = (SrcOp) Utils.find(testOps, TestSetInline.class); - if ( expr instanceof TestSetInline) { - TestSetInline e = (TestSetInline)expr; - Decl d = new TokenTypeDecl(factory, e.varName); + TestSetInline expr = Utils.find(testOps, TestSetInline.class); + if (expr != null) { + Decl d = new TokenTypeDecl(factory, expr.varName); factory.getCurrentRuleFunction().addLocalDecl(d); - CaptureNextTokenType nextType = new CaptureNextTokenType(factory,e.varName); + CaptureNextTokenType nextType = new CaptureNextTokenType(factory,expr.varName); addPreambleOp(nextType); } return expr; diff --git a/tool/src/org/antlr/v4/codegen/model/LL1Loop.java b/tool/src/org/antlr/v4/codegen/model/LL1Loop.java index 4b6d40216..72b689206 100644 --- a/tool/src/org/antlr/v4/codegen/model/LL1Loop.java +++ b/tool/src/org/antlr/v4/codegen/model/LL1Loop.java @@ -59,10 +59,9 @@ public abstract class LL1Loop extends Choice { } public SrcOp addCodeForLoopLookaheadTempVar(IntervalSet look) { - SrcOp expr = addCodeForLookaheadTempVar(look); - if ( expr instanceof TestSetInline ) { - TestSetInline e = (TestSetInline)expr; - CaptureNextTokenType nextType = new CaptureNextTokenType(factory, e.varName); + TestSetInline expr = addCodeForLookaheadTempVar(look); + if (expr != null) { + CaptureNextTokenType nextType = new CaptureNextTokenType(factory, expr.varName); addIterationOp(nextType); } return expr;