feat(muscript): prepare for extractSideEffects

This commit is contained in:
Johannes Frohnmeyer 2024-04-05 18:13:16 +02:00
parent b15058a8e8
commit 9e6e337843
Signed by: Johannes
GPG Key ID: E76429612C2929F4
5 changed files with 35 additions and 0 deletions

View File

@ -1,10 +1,18 @@
package io.gitlab.jfronny.muscript.ast.extensible;
import io.gitlab.jfronny.muscript.ast.BoolExpr;
import io.gitlab.jfronny.muscript.ast.Expr;
import java.util.stream.Stream;
public non-sealed interface ExtensibleBoolExpr extends BoolExpr, ExtensibleExpr {
@Override
default BoolExpr optimize() {
return this;
}
@Override
default Stream<Expr> extractSideEffects() {
return Stream.of(this);
}
}

View File

@ -1,10 +1,18 @@
package io.gitlab.jfronny.muscript.ast.extensible;
import io.gitlab.jfronny.muscript.ast.DynamicExpr;
import io.gitlab.jfronny.muscript.ast.Expr;
import java.util.stream.Stream;
public non-sealed interface ExtensibleDynamicExpr extends DynamicExpr, ExtensibleExpr {
@Override
default DynamicExpr optimize() {
return this;
}
@Override
default Stream<Expr> extractSideEffects() {
return Stream.of(this);
}
}

View File

@ -3,7 +3,10 @@ package io.gitlab.jfronny.muscript.ast.extensible;
import io.gitlab.jfronny.muscript.ast.Expr;
import io.gitlab.jfronny.muscript.core.ExprWriter;
import java.util.stream.Stream;
public sealed interface ExtensibleExpr permits ExtensibleBoolExpr, ExtensibleDynamicExpr, ExtensibleNumberExpr, ExtensibleStringExpr {
void decompile(ExprWriter writer);
Expr optimize();
Stream<Expr> extractSideEffects();
}

View File

@ -1,10 +1,18 @@
package io.gitlab.jfronny.muscript.ast.extensible;
import io.gitlab.jfronny.muscript.ast.Expr;
import io.gitlab.jfronny.muscript.ast.NumberExpr;
import java.util.stream.Stream;
public non-sealed interface ExtensibleNumberExpr extends NumberExpr, ExtensibleExpr {
@Override
default NumberExpr optimize() {
return this;
}
@Override
default Stream<Expr> extractSideEffects() {
return Stream.of(this);
}
}

View File

@ -1,10 +1,18 @@
package io.gitlab.jfronny.muscript.ast.extensible;
import io.gitlab.jfronny.muscript.ast.Expr;
import io.gitlab.jfronny.muscript.ast.StringExpr;
import java.util.stream.Stream;
public non-sealed interface ExtensibleStringExpr extends StringExpr, ExtensibleExpr {
@Override
default StringExpr optimize() {
return this;
}
@Override
default Stream<Expr> extractSideEffects() {
return Stream.of(this);
}
}