ProblemDetector.java 6.89 KB
package dagger.internal;

import java.util.AbstractSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public final class ProblemDetector
{
  /* Error */
  private static void detectCircularDependencies(Collection<Binding<?>> paramCollection, List<Binding<?>> paramList)
  {
    // Byte code:
    //   0: aload_0
    //   1: invokeinterface 20 1 0
    //   6: astore 4
    //   8: aload 4
    //   10: invokeinterface 26 1 0
    //   15: ifeq +233 -> 248
    //   18: aload 4
    //   20: invokeinterface 30 1 0
    //   25: checkcast 32	dagger/internal/Binding
    //   28: astore_0
    //   29: aload_0
    //   30: invokevirtual 35	dagger/internal/Binding:isCycleFree	()Z
    //   33: ifne -25 -> 8
    //   36: aload_0
    //   37: invokevirtual 38	dagger/internal/Binding:isVisiting	()Z
    //   40: ifeq +119 -> 159
    //   43: aload_1
    //   44: aload_0
    //   45: invokeinterface 44 2 0
    //   50: istore_3
    //   51: new 46	java/lang/StringBuilder
    //   54: dup
    //   55: ldc 48
    //   57: invokespecial 51	java/lang/StringBuilder:<init>	(Ljava/lang/String;)V
    //   60: astore 4
    //   62: iload_3
    //   63: istore_2
    //   64: iload_2
    //   65: aload_1
    //   66: invokeinterface 55 1 0
    //   71: if_icmpge +60 -> 131
    //   74: aload 4
    //   76: ldc 57
    //   78: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   81: iload_2
    //   82: iload_3
    //   83: isub
    //   84: invokevirtual 64	java/lang/StringBuilder:append	(I)Ljava/lang/StringBuilder;
    //   87: ldc 66
    //   89: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   92: aload_1
    //   93: iload_2
    //   94: invokeinterface 70 2 0
    //   99: checkcast 32	dagger/internal/Binding
    //   102: getfield 74	dagger/internal/Binding:provideKey	Ljava/lang/String;
    //   105: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   108: ldc 76
    //   110: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   113: aload_1
    //   114: iload_2
    //   115: invokeinterface 70 2 0
    //   120: invokevirtual 79	java/lang/StringBuilder:append	(Ljava/lang/Object;)Ljava/lang/StringBuilder;
    //   123: pop
    //   124: iload_2
    //   125: iconst_1
    //   126: iadd
    //   127: istore_2
    //   128: goto -64 -> 64
    //   131: aload 4
    //   133: ldc 81
    //   135: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   138: aload_0
    //   139: getfield 74	dagger/internal/Binding:provideKey	Ljava/lang/String;
    //   142: invokevirtual 61	java/lang/StringBuilder:append	(Ljava/lang/String;)Ljava/lang/StringBuilder;
    //   145: pop
    //   146: new 83	java/lang/IllegalStateException
    //   149: dup
    //   150: aload 4
    //   152: invokevirtual 87	java/lang/StringBuilder:toString	()Ljava/lang/String;
    //   155: invokespecial 88	java/lang/IllegalStateException:<init>	(Ljava/lang/String;)V
    //   158: athrow
    //   159: aload_0
    //   160: iconst_1
    //   161: invokevirtual 92	dagger/internal/Binding:setVisiting	(Z)V
    //   164: aload_1
    //   165: aload_0
    //   166: invokeinterface 96 2 0
    //   171: pop
    //   172: new 6	dagger/internal/ProblemDetector$ArraySet
    //   175: dup
    //   176: invokespecial 97	dagger/internal/ProblemDetector$ArraySet:<init>	()V
    //   179: astore 5
    //   181: aload_0
    //   182: aload 5
    //   184: aload 5
    //   186: invokevirtual 101	dagger/internal/Binding:getDependencies	(Ljava/util/Set;Ljava/util/Set;)V
    //   189: aload 5
    //   191: aload_1
    //   192: invokestatic 103	dagger/internal/ProblemDetector:detectCircularDependencies	(Ljava/util/Collection;Ljava/util/List;)V
    //   195: aload_0
    //   196: iconst_1
    //   197: invokevirtual 106	dagger/internal/Binding:setCycleFree	(Z)V
    //   200: aload_1
    //   201: aload_1
    //   202: invokeinterface 55 1 0
    //   207: iconst_1
    //   208: isub
    //   209: invokeinterface 109 2 0
    //   214: pop
    //   215: aload_0
    //   216: iconst_0
    //   217: invokevirtual 92	dagger/internal/Binding:setVisiting	(Z)V
    //   220: goto -212 -> 8
    //   223: astore 4
    //   225: aload_1
    //   226: aload_1
    //   227: invokeinterface 55 1 0
    //   232: iconst_1
    //   233: isub
    //   234: invokeinterface 109 2 0
    //   239: pop
    //   240: aload_0
    //   241: iconst_0
    //   242: invokevirtual 92	dagger/internal/Binding:setVisiting	(Z)V
    //   245: aload 4
    //   247: athrow
    //   248: return
    // Local variable table:
    //   start	length	slot	name	signature
    //   0	249	0	paramCollection	Collection<Binding<?>>
    //   0	249	1	paramList	List<Binding<?>>
    //   63	65	2	i	int
    //   50	34	3	j	int
    //   6	145	4	localObject1	Object
    //   223	23	4	localObject2	Object
    //   179	11	5	localArraySet	ArraySet
    // Exception table:
    //   from	to	target	type
    //   172	200	223	finally
  }
  
  public final void detectCircularDependencies(Collection<Binding<?>> paramCollection)
  {
    detectCircularDependencies(paramCollection, new ArrayList());
  }
  
  public final void detectProblems(Collection<Binding<?>> paramCollection)
  {
    detectCircularDependencies(paramCollection);
    detectUnusedBinding(paramCollection);
  }
  
  public final void detectUnusedBinding(Collection<Binding<?>> paramCollection)
  {
    ArrayList localArrayList = new ArrayList();
    paramCollection = paramCollection.iterator();
    while (paramCollection.hasNext())
    {
      Binding localBinding = (Binding)paramCollection.next();
      if ((!localBinding.library()) && (!localBinding.dependedOn())) {
        localArrayList.add(localBinding);
      }
    }
    if (!localArrayList.isEmpty())
    {
      paramCollection = new StringBuilder();
      paramCollection.append("You have these unused @Provider methods:");
      int i = 0;
      while (i < localArrayList.size())
      {
        paramCollection.append("\n    ").append(i + 1).append(". ").append(((Binding)localArrayList.get(i)).requiredBy);
        i += 1;
      }
      paramCollection.append("\n    Set library=true in your module to disable this check.");
      throw new IllegalStateException(paramCollection.toString());
    }
  }
  
  static class ArraySet<T>
    extends AbstractSet<T>
  {
    private final ArrayList<T> list = new ArrayList();
    
    public boolean add(T paramT)
    {
      this.list.add(paramT);
      return true;
    }
    
    public Iterator<T> iterator()
    {
      return this.list.iterator();
    }
    
    public int size()
    {
      throw new UnsupportedOperationException();
    }
  }
}


/* Location:              /home/merong/decompile/hackery-dex2jar.jar!/dagger/internal/ProblemDetector.class
 * Java compiler version: 6 (50.0)
 * JD-Core Version:       0.7.1
 */