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
diff --git a/src/com/google/doclava/ClassInfo.java b/src/com/google/doclava/ClassInfo.java
index 3a4090c..37e55f0 100644
--- a/src/com/google/doclava/ClassInfo.java
+++ b/src/com/google/doclava/ClassInfo.java
@@ -2048,16 +2048,20 @@
          * 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 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);