public static List toConcrete()

in meta/src/main/java/org/arend/lib/pattern/PatternUtils.java [52:70]


  public static List<ConcretePattern> toConcrete(List<? extends CorePattern> patterns, List<? extends ArendRef> asRefs, VariableRenamerFactory renamer, ConcreteFactory factory, Map<CoreBinding, ArendRef> bindings, CoreParameter parameters) {
    assert asRefs == null || patterns.size() == asRefs.size();
    List<ConcretePattern> result = new ArrayList<>(patterns.size());
    for (int i = 0; i < patterns.size(); i++) {
      ArendRef asRef = asRefs != null ? asRefs.get(i) : null;
      CoreBinding binding = patterns.get(i).getBinding();
      boolean setMap = binding != null && bindings == null && asRef != null;
      if (setMap) {
        bindings = Collections.singletonMap(binding, asRef);
      }
      ConcretePattern pattern = toConcrete(patterns.get(i), renamer, factory, bindings, parameters == null || !parameters.hasNext() || parameters.isExplicit());
      result.add(asRef != null && binding == null ? pattern.as(asRefs.get(i), null) : pattern);
      if (setMap) {
        bindings = null;
      }
      if (parameters != null && parameters.hasNext()) parameters = parameters.getNext();
    }
    return result;
  }