diff options
Diffstat (limited to 'src/core/lombok/javac')
-rw-r--r-- | src/core/lombok/javac/apt/EmptyLombokFileObject.java | 13 | ||||
-rw-r--r-- | src/core/lombok/javac/handlers/HandleToString.java | 28 |
2 files changed, 26 insertions, 15 deletions
diff --git a/src/core/lombok/javac/apt/EmptyLombokFileObject.java b/src/core/lombok/javac/apt/EmptyLombokFileObject.java index 84bb00e4..d1d00582 100644 --- a/src/core/lombok/javac/apt/EmptyLombokFileObject.java +++ b/src/core/lombok/javac/apt/EmptyLombokFileObject.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2011 The Project Lombok Authors. + * Copyright (C) 2010-2018 The Project Lombok Authors. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -52,8 +52,7 @@ class EmptyLombokFileObject implements LombokFileObject { @Override public boolean isNameCompatible(String simpleName, Kind kind) { String baseName = simpleName + kind.extension; return kind.equals(getKind()) - && (baseName.equals(toUri().getPath()) - || toUri().getPath().endsWith("/" + baseName)); + && (baseName.equals(toUri().getPath()) || toUri().getPath().endsWith("/" + baseName)); } @Override public URI toUri() { @@ -112,12 +111,8 @@ class EmptyLombokFileObject implements LombokFileObject { } @Override public boolean equals(Object obj) { - if (!(obj instanceof EmptyLombokFileObject)) { - return false; - } - if (obj == this) { - return true; - } + if (!(obj instanceof EmptyLombokFileObject)) return false; + if (obj == this) return true; EmptyLombokFileObject other = (EmptyLombokFileObject) obj; return name.equals(other.name) && kind.equals(other.kind); } diff --git a/src/core/lombok/javac/handlers/HandleToString.java b/src/core/lombok/javac/handlers/HandleToString.java index 28d18357..eb6e56f3 100644 --- a/src/core/lombok/javac/handlers/HandleToString.java +++ b/src/core/lombok/javac/handlers/HandleToString.java @@ -30,6 +30,7 @@ import java.util.Collection; import lombok.ConfigurationKeys; import lombok.ToString; import lombok.core.AnnotationValues; +import lombok.core.configuration.CallSuperType; import lombok.core.AST.Kind; import lombok.core.handlers.InclusionExclusionUtils; import lombok.core.handlers.InclusionExclusionUtils.Included; @@ -111,12 +112,6 @@ public class HandleToString extends JavacAnnotationHandler<ToString> { notAClass = (flags & (Flags.INTERFACE | Flags.ANNOTATION)) != 0; } - if (callSuper == null) { - try { - callSuper = ((Boolean) ToString.class.getMethod("callSuper").getDefaultValue()).booleanValue(); - } catch (Exception ignore) {} - } - if (notAClass) { source.addError("@ToString is only supported on a class or enum."); return; @@ -124,6 +119,27 @@ public class HandleToString extends JavacAnnotationHandler<ToString> { switch (methodExists("toString", typeNode, 0)) { case NOT_EXISTS: + if (callSuper == null) { + if (isDirectDescendantOfObject(typeNode)) { + callSuper = false; + } else { + CallSuperType cst = typeNode.getAst().readConfiguration(ConfigurationKeys.TO_STRING_CALL_SUPER); + if (cst == null) cst = CallSuperType.SKIP; + switch (cst) { + default: + case SKIP: + callSuper = false; + break; + case WARN: + source.addWarning("Generating toString implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@ToString(callSuper=false)' to your type."); + callSuper = false; + break; + case CALL: + callSuper = true; + break; + } + } + } JCMethodDecl method = createToString(typeNode, members, includeFieldNames, callSuper, fieldAccess, source.get()); injectMethod(typeNode, method); break; |