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;
}