From df5324e2d7f2ce12b691954dd79714ad7496b406 Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Wed, 15 Feb 2012 04:36:15 +0100 Subject: 'val' is no longer legal in basic for loops now. Fixes issue #346 --- src/core/lombok/javac/handlers/HandleVal.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/core/lombok/javac') diff --git a/src/core/lombok/javac/handlers/HandleVal.java b/src/core/lombok/javac/handlers/HandleVal.java index 7d4d9004..4feaa3ac 100644 --- a/src/core/lombok/javac/handlers/HandleVal.java +++ b/src/core/lombok/javac/handlers/HandleVal.java @@ -37,6 +37,7 @@ import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCAnnotation; import com.sun.tools.javac.tree.JCTree.JCEnhancedForLoop; import com.sun.tools.javac.tree.JCTree.JCExpression; +import com.sun.tools.javac.tree.JCTree.JCForLoop; import com.sun.tools.javac.tree.JCTree.JCNewArray; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; import com.sun.tools.javac.util.List; @@ -54,9 +55,14 @@ public class HandleVal extends JavacASTAdapter { if (!typeMatches(val.class, localNode, local.vartype)) return; + JCTree parentRaw = localNode.directUp().get(); + if (parentRaw instanceof JCForLoop) { + localNode.addError("'val' is not allowed in old-style for loops"); + return; + } + JCExpression rhsOfEnhancedForLoop = null; if (local.init == null) { - JCTree parentRaw = localNode.directUp().get(); if (parentRaw instanceof JCEnhancedForLoop) { JCEnhancedForLoop efl = (JCEnhancedForLoop) parentRaw; if (efl.var == local) rhsOfEnhancedForLoop = efl.expr; -- cgit