diff options
author | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-11-07 23:23:48 +0100 |
---|---|---|
committer | Reinier Zwitserloot <reinier@zwitserloot.com> | 2010-11-07 23:23:48 +0100 |
commit | 3b58e1a11539a6da05fa25f51e2acd91d2d9f7d7 (patch) | |
tree | b00729bacb4eaa4517d17a1d3e1ca0c83cac752e /src/core/lombok/eclipse/handlers/HandleVal.java | |
parent | fcf39d88b489d03bc93cecf0e98e7ffbb7a162aa (diff) | |
download | lombok-3b58e1a11539a6da05fa25f51e2acd91d2d9f7d7.tar.gz lombok-3b58e1a11539a6da05fa25f51e2acd91d2d9f7d7.tar.bz2 lombok-3b58e1a11539a6da05fa25f51e2acd91d2d9f7d7.zip |
'val' support for eclipse.
Diffstat (limited to 'src/core/lombok/eclipse/handlers/HandleVal.java')
-rw-r--r-- | src/core/lombok/eclipse/handlers/HandleVal.java | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/core/lombok/eclipse/handlers/HandleVal.java b/src/core/lombok/eclipse/handlers/HandleVal.java new file mode 100644 index 00000000..6fa39b10 --- /dev/null +++ b/src/core/lombok/eclipse/handlers/HandleVal.java @@ -0,0 +1,53 @@ +/* + * Copyright © 2009-2010 Reinier Zwitserloot, Roel Spilker and Robbert Jan Grootjans. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +package lombok.eclipse.handlers; + +import lombok.eclipse.EclipseASTAdapter; +import lombok.eclipse.EclipseASTVisitor; +import lombok.eclipse.EclipseNode; + +import org.eclipse.jdt.internal.compiler.ast.ArrayInitializer; +import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration; +import org.eclipse.jdt.internal.compiler.ast.SingleTypeReference; +import org.mangosdk.spi.ProviderFor; + +/* + * This class just handles 2 basic error cases. The real meat of eclipse 'val' support is in {@code EclipsePatcher}'s {@code patchHandleVal} method. + */ +@ProviderFor(EclipseASTVisitor.class) +public class HandleVal extends EclipseASTAdapter { + @Override public void visitLocal(EclipseNode localNode, LocalDeclaration local) { + if (local.type instanceof SingleTypeReference) { + char[] token = ((SingleTypeReference)local.type).token; + if (token == null || token.length != 3) return; + else if (token[0] != 'v' || token[1] != 'a' || token[2] != 'l') return; + + if (local.initialization == null) { + localNode.addError("'val' on a local variable requires an initializer expression"); + } + + if (local.initialization instanceof ArrayInitializer) { + localNode.addError("'val' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })"); + } + } + } +} |