Example #1
0
    @Override
    public boolean visitIfExpression(@NotNull UIfExpression node) {
      UExpression condition = node.getCondition();
      UExpression body = node.getThenBranch();
      UElement elseBody = node.getElseBranch();
      condition.accept(this);

      if (body != null) {
        boolean wasReachable = mReachable;
        body.accept(this);
        mReachable = wasReachable;
      }
      if (elseBody != null) {
        boolean wasReachable = mReachable;
        elseBody.accept(this);
        mReachable = wasReachable;
      }

      return false;
    }
Example #2
0
  @Nullable
  private static String getLhs(@NonNull UCallExpression call) {
    UElement parent = call.getParent();
    if (UastBinaryExpressionWithTypeUtils.isTypeCast(parent)) {
      assert parent != null;
      parent = parent.getParent();
    }

    if (parent instanceof UVariable) {
      UVariable vde = (UVariable) parent;
      return vde.getName();
    } else if (parent instanceof UBinaryExpression) {
      UBinaryExpression be = (UBinaryExpression) parent;
      UExpression left = be.getLeftOperand();
      if (left instanceof USimpleReferenceExpression || left instanceof UQualifiedExpression) {
        return be.getLeftOperand().toString();
      } else if (left instanceof UArrayAccessExpression) {
        UArrayAccessExpression aa = (UArrayAccessExpression) left;
        return aa.getReceiver().toString();
      }
    }

    return null;
  }
Example #3
0
 private static boolean isReachableFrom(
     @NonNull UElement method, @NonNull UCallExpression from, @NonNull UCallExpression to) {
   ReachableVisitor visitor = new ReachableVisitor(from, to);
   method.accept(visitor);
   return visitor.isReachable();
 }