summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Lesinski <adamlesinski@google.com>2018-01-23 01:11:54 -0800
committerAdam Lesinski <adamlesinski@google.com>2018-01-23 13:15:37 -0800
commit8f5b83f65ffe255755f7fe604f0e9fc473bbbe38 (patch)
tree6a973caeed30fa622724915efe348c93145eb10d
parentb5c67c17c5d2e6436a37ed66ccc1a26c28c9807f (diff)
downloadplatform_external_doclava-8f5b83f65ffe255755f7fe604f0e9fc473bbbe38.tar.gz
platform_external_doclava-8f5b83f65ffe255755f7fe604f0e9fc473bbbe38.tar.bz2
platform_external_doclava-8f5b83f65ffe255755f7fe604f0e9fc473bbbe38.zip
Reduce 'final' method churn when class is 'final'
Final classes cannot be overridden, making each method effectively final. Removal or addition of 'final' identifiers shouldn't affect the api file. Test: manual Change-Id: Icce1d75ed535a40147ebe5e75a41c63b8e6f8ad4
-rw-r--r--src/com/google/doclava/Converter.java15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/com/google/doclava/Converter.java b/src/com/google/doclava/Converter.java
index 269c860..a6f803b 100644
--- a/src/com/google/doclava/Converter.java
+++ b/src/com/google/doclava/Converter.java
@@ -474,15 +474,20 @@ public class Converter {
return result;
} else if (o instanceof MethodDoc) {
MethodDoc m = (MethodDoc) o;
+ final ClassInfo containingClass = Converter.obtainClass(m.containingClass());
+
+ // The containing class is final, so it is implied that every method is final as well.
+ // No need to apply 'final' to each method.
+ final boolean isMethodFinal = m.isFinal() && !containingClass.isFinal();
MethodInfo result =
new MethodInfo(m.getRawCommentText(),
new ArrayList<TypeInfo>(Arrays.asList(
Converter.convertTypes(m.typeParameters()))), m.name(), m.signature(),
- Converter.obtainClass(m.containingClass()),
- Converter.obtainClass(m.containingClass()), m.isPublic(), m.isProtected(),
- m.isPackagePrivate(), m.isPrivate(), m.isFinal(), m.isStatic(), m.isSynthetic(),
- m.isAbstract(), m.isSynchronized(), m.isNative(), m.isDefault(), false,
- "method", m.flatSignature(), Converter.obtainMethod(m.overriddenMethod()),
+ containingClass, containingClass, m.isPublic(), m.isProtected(),
+ m.isPackagePrivate(), m.isPrivate(), isMethodFinal, m.isStatic(),
+ m.isSynthetic(), m.isAbstract(), m.isSynchronized(), m.isNative(),
+ m.isDefault(), false, "method", m.flatSignature(),
+ Converter.obtainMethod(m.overriddenMethod()),
Converter.obtainType(m.returnType()),
new ArrayList<ParameterInfo>(Arrays.asList(
Converter.convertParameters(m.parameters(), m))),