package io.gitlab.jfronny.muscript.ast; import io.gitlab.jfronny.muscript.compiler.Order; import io.gitlab.jfronny.muscript.data.dynamic.Dynamic; import io.gitlab.jfronny.muscript.ast.dynamic.unpack.*; import io.gitlab.jfronny.muscript.compiler.Type; public abstract non-sealed class DynamicExpr extends Expr> { protected DynamicExpr(Order order, int chStart, int chEnd) { super(order, chStart, chEnd); } @Override public Type getResultType() { return Type.Dynamic; } @Override public abstract DynamicExpr optimize(); @Override public BoolExpr asBoolExpr() { return new BoolUnpack(chStart, chEnd, this); } @Override public StringExpr asStringExpr() { return new StringUnpack(chStart, chEnd, this); } @Override public NumberExpr asNumberExpr() { return new NumberUnpack(chStart, chEnd, this); } @Override public DynamicExpr asDynamicExpr() { return this; } }