At the moment, we have ExpressionIsh as the superclass of “[a]ll node types in the expression sub-hierarchy: Expression and some auxiliary node types that aren’t proper Expressions.”
As expressions have become more and more powerful, ExpressionIsh has become more and more bloated, both in the number of its subtypes and in the number of union type members in its children type.
And with inline expressions entering the game as well now – meaning that I need to make even more types subtypes of ExpressionIsh, like ExtendedType and SatisfiedTypes for #68 –, I wonder if ExpressionIsh is still any meaningful abstraction, or if we should perhaps just remove it, and make Expression have a plain Node[] children.
Of course, this means that the Node type grows a lot more direct subtypes.
At the moment, we have
ExpressionIsh
as the superclass of “[a]ll node types in the expression sub-hierarchy:Expression
and some auxiliary node types that aren’t proper Expressions.”As expressions have become more and more powerful,
ExpressionIsh
has become more and more bloated, both in the number of its subtypes and in the number of union type members in itschildren
type.And with inline expressions entering the game as well now – meaning that I need to make even more types subtypes of
ExpressionIsh
, likeExtendedType
andSatisfiedTypes
for #68 –, I wonder ifExpressionIsh
is still any meaningful abstraction, or if we should perhaps just remove it, and makeExpression
have a plainNode[] children
.Of course, this means that the
Node
type grows a lot more direct subtypes.