Вывод уточнений при выводе паттернов

This commit is contained in:
Victor 2016-07-22 21:18:37 +03:00
parent 6d6db55055
commit 4ac0943805

View File

@ -208,6 +208,16 @@ public final class MatchExpression extends InterruptableNode implements Expressi
public static abstract class Pattern { public static abstract class Pattern {
public Statement result; public Statement result;
public Expression optCondition; public Expression optCondition;
@Override
public String toString() {
final StringBuilder sb = new StringBuilder();
if (optCondition != null) {
sb.append(" if ").append(optCondition);
}
sb.append(": ").append(result);
return sb.toString();
}
} }
public static class ConstantPattern extends Pattern { public static class ConstantPattern extends Pattern {
@ -219,7 +229,7 @@ public final class MatchExpression extends InterruptableNode implements Expressi
@Override @Override
public String toString() { public String toString() {
return constant + ": " + result; return constant.toString().concat(super.toString());
} }
} }
@ -232,7 +242,7 @@ public final class MatchExpression extends InterruptableNode implements Expressi
@Override @Override
public String toString() { public String toString() {
return variable + ": " + result; return variable.concat(super.toString());
} }
} }
@ -260,10 +270,10 @@ public final class MatchExpression extends InterruptableNode implements Expressi
while (it.hasNext()) { while (it.hasNext()) {
sb.append(" :: ").append(it.next()); sb.append(" :: ").append(it.next());
} }
sb.append("]: ").append(result); sb.append("]").append(super.toString());
return sb.toString(); return sb.toString();
} }
return "[]: " + result; return "[]".concat(super.toString());
} }
} }
@ -291,14 +301,14 @@ public final class MatchExpression extends InterruptableNode implements Expressi
final Iterator<Expression> it = values.iterator(); final Iterator<Expression> it = values.iterator();
if (it.hasNext()) { if (it.hasNext()) {
final StringBuilder sb = new StringBuilder(); final StringBuilder sb = new StringBuilder();
sb.append("(").append(it.next()); sb.append('(').append(it.next());
while (it.hasNext()) { while (it.hasNext()) {
sb.append(", ").append(it.next()); sb.append(", ").append(it.next());
} }
sb.append("): ").append(result); sb.append(')').append(super.toString());
return sb.toString(); return sb.toString();
} }
return "(): " + result; return "()".concat(super.toString());
} }
private static final Expression ANY = new Expression() { private static final Expression ANY = new Expression() {
@ -318,7 +328,7 @@ public final class MatchExpression extends InterruptableNode implements Expressi
@Override @Override
public String toString() { public String toString() {
return "_"; return "_".concat(super.toString());
} }
}; };
} }