In a when block I have a lot of code like that:
"-" -> if (aggregate is Minus) Minus(*aggregate.expressions, nextExpression) else Minus(aggregate, nextExpression)
"+" -> if (aggregate is Plus) Plus(*aggregate.expressions, nextExpression) else Plus(aggregate, nextExpression)
....
I wanted to make that easier, but i am failing. My Idea was something like this:
private inline fun <reified T> myIdea(aggregate: InfixExpression, nextExpression: Expression): T = if (aggregate is T)
T(*aggregate.expressions, nextExpression)
else
T(aggregate, nextExpression)
using the Type T as a Constructor does not work. Any advice?