diff options
author | Michael Wright <michaelwr@google.com> | 2017-10-21 17:54:46 -0700 |
---|---|---|
committer | Aurimas Liutikas <aurimas@google.com> | 2018-07-16 12:25:32 -0700 |
commit | f242941b118ee4d50063805bae2a8e6b927e71b1 (patch) | |
tree | b239d7c3b5925aa7d328debc70de58de999f69d8 /src | |
parent | 5e21830414e9b2c60195cb6498f4218b908dd3c7 (diff) | |
download | doclava-f242941b118ee4d50063805bae2a8e6b927e71b1.tar.gz |
Add a new error type for added abstract methods.
If an abstract class that was released in prior version has an abstract
method added to it, this should be considered a breaking change since it
will break source compatibility.
Test: m -j12 and see the build break because of methods added to
ViewStructure
Change-Id: I28c7051a574bb50d2bde0c8034056add58ff69e5
Merged-In: I28c7051a574bb50d2bde0c8034056add58ff69e5
Diffstat (limited to 'src')
-rw-r--r-- | src/com/google/doclava/ClassInfo.java | 20 | ||||
-rw-r--r-- | src/com/google/doclava/Errors.java | 1 |
2 files changed, 13 insertions, 8 deletions
diff --git a/src/com/google/doclava/ClassInfo.java b/src/com/google/doclava/ClassInfo.java index 2393c2c..dbe7783 100644 --- a/src/com/google/doclava/ClassInfo.java +++ b/src/com/google/doclava/ClassInfo.java @@ -2193,16 +2193,20 @@ public class ClassInfo extends DocInfo implements ContainerInfo, Comparable, Sco * abstractness affects how users use it. See also Stubs.methodIsOverride(). */ MethodInfo mi = ClassInfo.overriddenMethod(mInfo, this); - if (mi == null || - mi.isAbstract() != mInfo.isAbstract()) { - Errors.error(Errors.ADDED_METHOD, mInfo.position(), "Added public method " - + mInfo.prettyQualifiedSignature()); - if (diffMode) { - newMethods.add(mInfo); - } + if (mi == null && mInfo.isAbstract()) { + Errors.error(Errors.ADDED_ABSTRACT_METHOD, mInfo.position(), + "Added abstract public method " + + mInfo.prettyQualifiedSignature() + " to existing class"); consistent = false; + } else if (mi == null || mi.isAbstract() != mInfo.isAbstract()) { + Errors.error(Errors.ADDED_METHOD, mInfo.position(), "Added public method " + + mInfo.prettyQualifiedSignature()); + if (diffMode) { + newMethods.add(mInfo); + } + consistent = false; + } } - } } if (diffMode) { Collections.sort(newMethods, MethodInfo.comparator); diff --git a/src/com/google/doclava/Errors.java b/src/com/google/doclava/Errors.java index 9edd239..6b0eee0 100644 --- a/src/com/google/doclava/Errors.java +++ b/src/com/google/doclava/Errors.java @@ -281,6 +281,7 @@ public class Errors { public static final Error REMOVED_DEPRECATED_CLASS = new Error(28, REMOVED_CLASS); public static final Error REMOVED_DEPRECATED_METHOD = new Error(29, REMOVED_METHOD); public static final Error REMOVED_DEPRECATED_FIELD = new Error(30, REMOVED_FIELD); + public static final Error ADDED_ABSTRACT_METHOD = new Error(31, ADDED_METHOD); // Errors in javadoc generation public static final Error UNRESOLVED_LINK = new Error(101, LINT); |