From 74c972308ffe8564bdb75ae343b425128a6cfec3 Mon Sep 17 00:00:00 2001 From: Ivan Gavrilovic Date: Thu, 16 Nov 2017 08:29:18 +0000 Subject: Do not consider clinit as static interface method Class initializer should not be considered a static interface method. This caused warnings when dexing any interface with . Test: 143-interface-methods Change-Id: I29edc2430d322ac3a8dac1d0f1ba9c8cee2f00fb --- dx/src/com/android/dx/cf/code/ConcreteMethod.java | 3 ++- dx/tests/143-interface-methods/StaticDefinition.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dx/src/com/android/dx/cf/code/ConcreteMethod.java b/dx/src/com/android/dx/cf/code/ConcreteMethod.java index 2210c89af..b544add77 100644 --- a/dx/src/com/android/dx/cf/code/ConcreteMethod.java +++ b/dx/src/com/android/dx/cf/code/ConcreteMethod.java @@ -138,7 +138,8 @@ public final class ConcreteMethod implements Method { * @return true if the method is being defined on an interface. */ public final boolean isDefaultOrStaticInterfaceMethod() { - return (classFile.getAccessFlags() & AccessFlags.ACC_INTERFACE) != 0; + return (classFile.getAccessFlags() & AccessFlags.ACC_INTERFACE) != 0 + && !getNat().isClassInit(); } /** diff --git a/dx/tests/143-interface-methods/StaticDefinition.java b/dx/tests/143-interface-methods/StaticDefinition.java index 1a81738a0..ab82cfc2f 100644 --- a/dx/tests/143-interface-methods/StaticDefinition.java +++ b/dx/tests/143-interface-methods/StaticDefinition.java @@ -15,7 +15,8 @@ */ public interface StaticDefinition { - public static void printIt(String s) { + long createsClinit = System.currentTimeMillis(); + public static void printIt(String s) { System.out.println(s); } } -- cgit v1.2.3