public void getAllValues()

in meta/src/main/java/org/arend/lib/util/NamedParameter.java [118:136]


  public void getAllValues(ConcreteExpression expression, Map<ArendRef, ConcreteExpression> parameters, Set<ArendRef> flags, List<ConcreteExpression> expressions, ErrorReporter errorReporter) {
    List<? extends ConcreteExpression> fields = expression instanceof ConcreteTupleExpression ? ((ConcreteTupleExpression) expression).getFields() : Collections.singletonList(expression);
    for (ConcreteExpression field : fields) {
      Pair<ArendRef, ConcreteExpression> pair = getKeyAndValue(field);
      if (pair != null) {
        boolean ok;
        if (pair.proj2 == null) {
          ok = flags == null || flags.add(pair.proj1);
        } else {
          ok = parameters == null || parameters.putIfAbsent(pair.proj1, pair.proj2) == null;
        }
        if (!ok && errorReporter != null) {
          errorReporter.report(new TypecheckingError((pair.proj2 == null ? "Flag" : "Parameter") + " '" + pair.proj1.getRefName() + "' is already set", field));
        }
      } else if (expressions != null) {
        expressions.add(field);
      }
    }
  }