private static boolean getTupleOfRefs()

in meta/src/main/java/org/arend/lib/util/Utils.java [380:413]


  private static boolean getTupleOfRefs(ConcreteExpression expr, ExpressionResolver resolver, List<ArendRef> refs) {
    if (expr instanceof ConcreteReferenceExpression) {
      ArendRef ref = ((ConcreteReferenceExpression) expr).getReferent();
      if (resolver.isLongUnresolvedReference(ref)) {
        return false;
      }
      refs.add(ref);
      return true;
    }

    if (expr instanceof ConcreteHoleExpression) {
      refs.add(null);
      return true;
    }

    if (expr instanceof ConcreteTupleExpression) {
      for (ConcreteExpression field : ((ConcreteTupleExpression) expr).getFields()) {
        if (field instanceof ConcreteReferenceExpression) {
          ArendRef ref = ((ConcreteReferenceExpression) field).getReferent();
          if (resolver.isLongUnresolvedReference(ref)) {
            return false;
          }
          refs.add(ref);
        } else if (field instanceof ConcreteHoleExpression) {
          refs.add(null);
        } else {
          return false;
        }
      }
      return true;
    }

    return false;
  }