@@ -31,6 +31,7 @@ class DexLimitTracker {
3131
3232 private final LinkedHashSet <FieldDescriptor > fieldsSeen = new LinkedHashSet <>();
3333 private final LinkedHashSet <MethodDescriptor > methodsSeen = new LinkedHashSet <>();
34+ private final LinkedHashSet <String > typesSeen = new LinkedHashSet <>();
3435 private final int maxNumberOfIdxPerDex ;
3536
3637 public DexLimitTracker (int maxNumberOfIdxPerDex ) {
@@ -40,17 +41,19 @@ public DexLimitTracker(int maxNumberOfIdxPerDex) {
4041 /**
4142 * Returns whether we're within limits.
4243 *
43- * @return {@code true} if method or field references are outside limits, {@code false} both are
44- * within limits.
44+ * @return {@code true} if method, field or type references are outside limits, {@code false} if
45+ * all are within limits.
4546 */
4647 public boolean outsideLimits () {
4748 return fieldsSeen .size () > maxNumberOfIdxPerDex
48- || methodsSeen .size () > maxNumberOfIdxPerDex ;
49+ || methodsSeen .size () > maxNumberOfIdxPerDex
50+ || typesSeen .size () > maxNumberOfIdxPerDex ;
4951 }
5052
5153 public void clear () {
5254 fieldsSeen .clear ();
5355 methodsSeen .clear ();
56+ typesSeen .clear ();
5457 }
5558
5659 public void track (Dex dexFile ) {
@@ -62,6 +65,10 @@ public void track(Dex dexFile) {
6265 for (int methodIndex = 0 ; methodIndex < methodCount ; ++methodIndex ) {
6366 methodsSeen .add (MethodDescriptor .fromDex (dexFile , methodIndex ));
6467 }
68+ int typeCount = dexFile .typeIds ().size ();
69+ for (int typeIndex = 0 ; typeIndex < typeCount ; ++typeIndex ) {
70+ typesSeen .add (typeName (dexFile , typeIndex ));
71+ }
6572 }
6673
6774 private static String typeName (Dex dex , int typeIndex ) {
0 commit comments