diff options
author | Bulgakov Alexander <abulgakov@at-consulting.ru> | 2016-11-12 15:56:17 +0300 |
---|---|---|
committer | Bulgakov Alexander <abulgakov@at-consulting.ru> | 2016-11-12 15:56:17 +0300 |
commit | 67371e5841e1dd8ed5d663f1c907da0952976b8f (patch) | |
tree | 677b27b2050d84daa11b5a8846a5c7d069d81148 /src/core/lombok | |
parent | 4fbbd8ed03f7963715bc6e7c7de6faae0b1ba917 (diff) | |
download | lombok-67371e5841e1dd8ed5d663f1c907da0952976b8f.tar.gz lombok-67371e5841e1dd8ed5d663f1c907da0952976b8f.tar.bz2 lombok-67371e5841e1dd8ed5d663f1c907da0952976b8f.zip |
imports expanded, idents aligned
Diffstat (limited to 'src/core/lombok')
-rw-r--r-- | src/core/lombok/core/handlers/HandlerUtil.java | 82 | ||||
-rw-r--r-- | src/core/lombok/eclipse/handlers/HandleVal.java | 25 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleVal.java | 41 |
3 files changed, 83 insertions, 65 deletions
diff --git a/src/core/lombok/core/handlers/HandlerUtil.java b/src/core/lombok/core/handlers/HandlerUtil.java index cdca991a..a321e67f 100644 --- a/src/core/lombok/core/handlers/HandlerUtil.java +++ b/src/core/lombok/core/handlers/HandlerUtil.java @@ -21,7 +21,24 @@ */ package lombok.core.handlers; -import lombok.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.regex.Pattern; + +import lombok.AllArgsConstructor; +import lombok.ConfigurationKeys; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import lombok.Value; import lombok.core.AST; import lombok.core.AnnotationValues; import lombok.core.JavaIdentifiers; @@ -33,13 +50,6 @@ import lombok.experimental.Accessors; import lombok.experimental.FieldDefaults; import lombok.experimental.Wither; -import java.util.*; -import java.util.regex.Pattern; - -import static lombok.core.configuration.FlagUsageType.ALLOW; -import static lombok.core.configuration.FlagUsageType.ERROR; -import static lombok.core.configuration.FlagUsageType.WARNING; - /** * Container for static utility methods useful for some of the standard lombok handlers, regardless of * target platform (e.g. useful for both javac and Eclipse lombok implementations). @@ -64,7 +74,7 @@ public class HandlerUtil { } /** Checks if the given name is a valid identifier. - * + * * If it is, this returns {@code true} and does nothing else. * If it isn't, this returns {@code false} and adds an error message to the supplied node. */ @@ -90,15 +100,15 @@ public class HandlerUtil { FlagUsageType fut = node.getAst().readConfiguration(key); - boolean allowed = !allowable || ALLOW == fut; + boolean allowed = !allowable || FlagUsageType.ALLOW == fut; if (!allowed) { - node.addError("Use of " + featureName + " is disabled by default. Please use flag " + ALLOW + " to enable."); + node.addError("Use of " + featureName + " is disabled by default. Please use flag " + FlagUsageType.ALLOW + " to enable."); } if (fut != null) { String msg = "Use of " + featureName + " is flagged according to lombok configuration."; - if (fut == WARNING) node.addWarning(msg); - else if (fut == ERROR) node.addError(msg); + if (fut == FlagUsageType.WARNING) node.addWarning(msg); + else if (fut == FlagUsageType.ERROR) node.addError(msg); } } @@ -112,13 +122,13 @@ public class HandlerUtil { FlagUsageType fut = null; String featureName = null; - if (fut1 == ERROR) { + if (fut1 == FlagUsageType.ERROR) { fut = fut1; featureName = featureName1; - } else if (fut2 == ERROR) { + } else if (fut2 == FlagUsageType.ERROR) { fut = fut2; featureName = featureName2; - } else if (fut1 == WARNING) { + } else if (fut1 == FlagUsageType.WARNING) { fut = fut1; featureName = featureName1; } else { @@ -128,7 +138,7 @@ public class HandlerUtil { if (fut != null) { String msg = "Use of " + featureName + " is flagged according to lombok configuration."; - if (fut == WARNING) node.addWarning(msg); + if (fut == FlagUsageType.WARNING) node.addWarning(msg); else node.addError(msg); } } @@ -159,8 +169,8 @@ public class HandlerUtil { @SuppressWarnings({"all", "unchecked", "deprecation"}) public static final List<Class<? extends java.lang.annotation.Annotation>> INVALID_ON_BUILDERS = Collections.unmodifiableList( Arrays.<Class<? extends java.lang.annotation.Annotation>>asList( - Getter.class, Setter.class, Wither.class, ToString.class, EqualsAndHashCode.class, - RequiredArgsConstructor.class, AllArgsConstructor.class, NoArgsConstructor.class, + Getter.class, Setter.class, Wither.class, ToString.class, EqualsAndHashCode.class, + RequiredArgsConstructor.class, AllArgsConstructor.class, NoArgsConstructor.class, Data.class, Value.class, lombok.experimental.Value.class, FieldDefaults.class)); /** @@ -168,9 +178,9 @@ public class HandlerUtil { * For prefixes that end in a letter character, the next character must be a non-lowercase character (i.e. {@code hashCode} is not {@code ashCode} even if * {@code h} is in the prefix list, but {@code hAshcode} would become {@code ashCode}). The first prefix that matches is used. If the prefix list is empty, * or the empty string is in the prefix list and no prefix before it matches, the fieldName will be returned verbatim. - * + * * If no prefix matches and the empty string is not in the prefix list and the prefix list is not empty, {@code null} is returned. - * + * * @param fieldName The full name of a field. * @param prefixes A list of prefixes, usually provided by the {@code Accessors} settings annotation, listing field prefixes. * @return The base name of the field. @@ -213,19 +223,19 @@ public class HandlerUtil { /** * Generates a getter name from a given field name. - * + * * Strategy: * <ul> * <li>Reduce the field's name to its base name by stripping off any prefix (from {@code Accessors}). If the field name does not fit * the prefix list, this method immediately returns {@code null}.</li> * <li>If {@code Accessors} has {@code fluent=true}, then return the basename.</li> * <li>Pick a prefix. 'get' normally, but 'is' if {@code isBoolean} is true.</li> - * <li>Only if {@code isBoolean} is true: Check if the field starts with {@code is} followed by a non-lowercase character. If so, return the field name verbatim.</li> + * <li>Only if {@code isBoolean} is true: Check if the field starts with {@code is} followed by a non-lowercase character. If so, return the field name verbatim.</li> * <li>Check if the first character of the field is lowercase. If so, check if the second character * exists and is title or upper case. If so, uppercase the first character. If not, titlecase the first character.</li> * <li>Return the prefix plus the possibly title/uppercased first character, and the rest of the field name.</li> * </ul> - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type {@code java.lang.Boolean}, you should provide {@code false}. @@ -237,19 +247,19 @@ public class HandlerUtil { /** * Generates a setter name from a given field name. - * + * * Strategy: * <ul> * <li>Reduce the field's name to its base name by stripping off any prefix (from {@code Accessors}). If the field name does not fit * the prefix list, this method immediately returns {@code null}.</li> * <li>If {@code Accessors} has {@code fluent=true}, then return the basename.</li> * <li>Only if {@code isBoolean} is true: Check if the field starts with {@code is} followed by a non-lowercase character. - * If so, replace {@code is} with {@code set} and return that.</li> + * If so, replace {@code is} with {@code set} and return that.</li> * <li>Check if the first character of the field is lowercase. If so, check if the second character * exists and is title or upper case. If so, uppercase the first character. If not, titlecase the first character.</li> * <li>Return {@code "set"} plus the possibly title/uppercased first character, and the rest of the field name.</li> * </ul> - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type {@code java.lang.Boolean}, you should provide {@code false}. @@ -261,18 +271,18 @@ public class HandlerUtil { /** * Generates a wither name from a given field name. - * + * * Strategy: * <ul> * <li>Reduce the field's name to its base name by stripping off any prefix (from {@code Accessors}). If the field name does not fit * the prefix list, this method immediately returns {@code null}.</li> * <li>Only if {@code isBoolean} is true: Check if the field starts with {@code is} followed by a non-lowercase character. - * If so, replace {@code is} with {@code with} and return that.</li> + * If so, replace {@code is} with {@code with} and return that.</li> * <li>Check if the first character of the field is lowercase. If so, check if the second character * exists and is title or upper case. If so, uppercase the first character. If not, titlecase the first character.</li> * <li>Return {@code "with"} plus the possibly title/uppercased first character, and the rest of the field name.</li> * </ul> - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type {@code java.lang.Boolean}, you should provide {@code false}. @@ -313,10 +323,10 @@ public class HandlerUtil { /** * Returns all names of methods that would represent the getter for a field with the provided name. - * + * * For example if {@code isBoolean} is true, then a field named {@code isRunning} would produce:<br /> * {@code [isRunning, getRunning, isIsRunning, getIsRunning]} - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type 'java.lang.Boolean', you should provide {@code false}. @@ -327,10 +337,10 @@ public class HandlerUtil { /** * Returns all names of methods that would represent the setter for a field with the provided name. - * + * * For example if {@code isBoolean} is true, then a field named {@code isRunning} would produce:<br /> * {@code [setRunning, setIsRunning]} - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type 'java.lang.Boolean', you should provide {@code false}. @@ -341,10 +351,10 @@ public class HandlerUtil { /** * Returns all names of methods that would represent the wither for a field with the provided name. - * + * * For example if {@code isBoolean} is true, then a field named {@code isRunning} would produce:<br /> * {@code [withRunning, withIsRunning]} - * + * * @param accessors Accessors configuration. * @param fieldName the name of the field. * @param isBoolean if the field is of type 'boolean'. For fields of type 'java.lang.Boolean', you should provide {@code false}. diff --git a/src/core/lombok/eclipse/handlers/HandleVal.java b/src/core/lombok/eclipse/handlers/HandleVal.java index 0a136d0b..e8b1deb4 100644 --- a/src/core/lombok/eclipse/handlers/HandleVal.java +++ b/src/core/lombok/eclipse/handlers/HandleVal.java @@ -21,18 +21,14 @@ */ package lombok.eclipse.handlers; -import static lombok.core.handlers.HandlerUtil.*; -import static lombok.eclipse.handlers.EclipseHandlerUtil.typeMatches; - import lombok.ConfigurationKeys; -import lombok.val; import lombok.core.HandlerPriority; import lombok.eclipse.DeferUntilPostDiet; import lombok.eclipse.EclipseASTAdapter; import lombok.eclipse.EclipseASTVisitor; import lombok.eclipse.EclipseNode; - import lombok.experimental.var; +import lombok.val; import org.eclipse.jdt.internal.compiler.ast.ArrayInitializer; import org.eclipse.jdt.internal.compiler.ast.ForStatement; import org.eclipse.jdt.internal.compiler.ast.ForeachStatement; @@ -40,6 +36,9 @@ import org.eclipse.jdt.internal.compiler.ast.LocalDeclaration; import org.eclipse.jdt.internal.compiler.ast.TypeReference; import org.mangosdk.spi.ProviderFor; +import static lombok.core.handlers.HandlerUtil.handleFlagUsage; +import static lombok.eclipse.handlers.EclipseHandlerUtil.typeMatches; + /* * This class just handles 3 basic error cases. The real meat of eclipse 'val' support is in {@code PatchVal} and {@code PatchValEclipse}. */ @@ -51,34 +50,34 @@ public class HandleVal extends EclipseASTAdapter { TypeReference type = local.type; boolean isVal = typeMatches(val.class, localNode, type); boolean isVar = typeMatches(var.class, localNode, type); - if (!(isVal ||isVar)) return; - + if (!(isVal || isVar)) return; + if (isVal) handleFlagUsage(localNode, ConfigurationKeys.VAL_FLAG_USAGE, "val"); if (isVar) handleFlagUsage(localNode, ConfigurationKeys.VAR_FLAG_USAGE, "var"); - + boolean variableOfForEach = false; - + if (localNode.directUp().get() instanceof ForeachStatement) { ForeachStatement fs = (ForeachStatement) localNode.directUp().get(); variableOfForEach = fs.elementVariable == local; } - + String annotation = isVal ? "val" : "var"; if (local.initialization == null && !variableOfForEach) { localNode.addError("'" + annotation + "' on a local variable requires an initializer expression"); return; } - + if (local.initialization instanceof ArrayInitializer) { localNode.addError("'" + annotation + "' is not compatible with array initializer expressions. Use the full form (new int[] { ... } instead of just { ... })"); return; } - + if (isVal && localNode.directUp().get() instanceof ForStatement) { localNode.addError("'val' is not allowed in old-style for loops"); return; } - + if (local.initialization != null && local.initialization.getClass().getName().equals("org.eclipse.jdt.internal.compiler.ast.LambdaExpression")) { localNode.addError("'" + annotation + "' is not allowed with lambda expressions."); } diff --git a/src/core/lombok/javac/handlers/HandleVal.java b/src/core/lombok/javac/handlers/HandleVal.java index 5b90ff62..47965573 100644 --- a/src/core/lombok/javac/handlers/HandleVal.java +++ b/src/core/lombok/javac/handlers/HandleVal.java @@ -21,22 +21,31 @@ */ package lombok.javac.handlers; +import static lombok.core.handlers.HandlerUtil.*; +import static lombok.javac.handlers.JavacHandlerUtil.*; +import lombok.ConfigurationKeys; +import lombok.experimental.var; +import lombok.val; +import lombok.core.HandlerPriority; +import lombok.javac.JavacASTAdapter; +import lombok.javac.JavacASTVisitor; +import lombok.javac.JavacNode; +import lombok.javac.JavacResolution; +import lombok.javac.ResolutionResetNeeded; + +import org.mangosdk.spi.ProviderFor; + import com.sun.tools.javac.code.Flags; import com.sun.tools.javac.code.Symtab; import com.sun.tools.javac.code.Type; import com.sun.tools.javac.tree.JCTree; -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; -import lombok.ConfigurationKeys; -import lombok.core.HandlerPriority; -import lombok.javac.*; -import lombok.val; -import lombok.experimental.var; -import org.mangosdk.spi.ProviderFor; - -import static lombok.core.handlers.HandlerUtil.handleFlagUsage; -import static lombok.javac.handlers.JavacHandlerUtil.recursiveSetGeneratedBy; -import static lombok.javac.handlers.JavacHandlerUtil.typeMatches; @ProviderFor(JavacASTVisitor.class) @HandlerPriority(65536) // 2^16; resolution needs to work, so if the RHS expression is i.e. a call to a generated getter, we have to run after that getter has been generated. @@ -98,13 +107,13 @@ public class HandleVal extends JavacASTAdapter { JCAnnotation valAnnotation = recursiveSetGeneratedBy(localNode.getTreeMaker().Annotation(local.vartype, List.<JCExpression>nil()), typeTree, localNode.getContext()); local.mods.annotations = local.mods.annotations == null ? List.of(valAnnotation) : local.mods.annotations.append(valAnnotation); } - + if (JavacResolution.platformHasTargetTyping()) { local.vartype = localNode.getAst().getTreeMaker().Ident(localNode.getAst().toName("___Lombok_VAL_Attrib__")); } else { local.vartype = JavacResolution.createJavaLangObject(localNode.getAst()); } - + Type type; try { if (rhsOfEnhancedForLoop == null) { @@ -137,10 +146,10 @@ public class HandleVal extends JavacASTAdapter { type = rhsOfEnhancedForLoop.type; } } - + try { JCExpression replacement; - + if (rhsOfEnhancedForLoop != null) { Type componentType = JavacResolution.ifTypeIsIterableToComponent(type, localNode.getAst()); if (componentType == null) replacement = JavacResolution.createJavaLangObject(localNode.getAst()); @@ -148,7 +157,7 @@ public class HandleVal extends JavacASTAdapter { } else { replacement = JavacResolution.typeToJCTree(type, localNode.getAst(), false); } - + if (replacement != null) { local.vartype = replacement; } else { |