feat(muscript): prepare for extractSideEffects
This commit is contained in:
parent
b15058a8e8
commit
9e6e337843
|
@ -1,10 +1,18 @@
|
||||||
package io.gitlab.jfronny.muscript.ast.extensible;
|
package io.gitlab.jfronny.muscript.ast.extensible;
|
||||||
|
|
||||||
import io.gitlab.jfronny.muscript.ast.BoolExpr;
|
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 {
|
public non-sealed interface ExtensibleBoolExpr extends BoolExpr, ExtensibleExpr {
|
||||||
@Override
|
@Override
|
||||||
default BoolExpr optimize() {
|
default BoolExpr optimize() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default Stream<Expr> extractSideEffects() {
|
||||||
|
return Stream.of(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
package io.gitlab.jfronny.muscript.ast.extensible;
|
package io.gitlab.jfronny.muscript.ast.extensible;
|
||||||
|
|
||||||
import io.gitlab.jfronny.muscript.ast.DynamicExpr;
|
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 {
|
public non-sealed interface ExtensibleDynamicExpr extends DynamicExpr, ExtensibleExpr {
|
||||||
@Override
|
@Override
|
||||||
default DynamicExpr optimize() {
|
default DynamicExpr optimize() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default Stream<Expr> extractSideEffects() {
|
||||||
|
return Stream.of(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,10 @@ package io.gitlab.jfronny.muscript.ast.extensible;
|
||||||
import io.gitlab.jfronny.muscript.ast.Expr;
|
import io.gitlab.jfronny.muscript.ast.Expr;
|
||||||
import io.gitlab.jfronny.muscript.core.ExprWriter;
|
import io.gitlab.jfronny.muscript.core.ExprWriter;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public sealed interface ExtensibleExpr permits ExtensibleBoolExpr, ExtensibleDynamicExpr, ExtensibleNumberExpr, ExtensibleStringExpr {
|
public sealed interface ExtensibleExpr permits ExtensibleBoolExpr, ExtensibleDynamicExpr, ExtensibleNumberExpr, ExtensibleStringExpr {
|
||||||
void decompile(ExprWriter writer);
|
void decompile(ExprWriter writer);
|
||||||
Expr optimize();
|
Expr optimize();
|
||||||
|
Stream<Expr> extractSideEffects();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
package io.gitlab.jfronny.muscript.ast.extensible;
|
package io.gitlab.jfronny.muscript.ast.extensible;
|
||||||
|
|
||||||
|
import io.gitlab.jfronny.muscript.ast.Expr;
|
||||||
import io.gitlab.jfronny.muscript.ast.NumberExpr;
|
import io.gitlab.jfronny.muscript.ast.NumberExpr;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public non-sealed interface ExtensibleNumberExpr extends NumberExpr, ExtensibleExpr {
|
public non-sealed interface ExtensibleNumberExpr extends NumberExpr, ExtensibleExpr {
|
||||||
@Override
|
@Override
|
||||||
default NumberExpr optimize() {
|
default NumberExpr optimize() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default Stream<Expr> extractSideEffects() {
|
||||||
|
return Stream.of(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
package io.gitlab.jfronny.muscript.ast.extensible;
|
package io.gitlab.jfronny.muscript.ast.extensible;
|
||||||
|
|
||||||
|
import io.gitlab.jfronny.muscript.ast.Expr;
|
||||||
import io.gitlab.jfronny.muscript.ast.StringExpr;
|
import io.gitlab.jfronny.muscript.ast.StringExpr;
|
||||||
|
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
public non-sealed interface ExtensibleStringExpr extends StringExpr, ExtensibleExpr {
|
public non-sealed interface ExtensibleStringExpr extends StringExpr, ExtensibleExpr {
|
||||||
@Override
|
@Override
|
||||||
default StringExpr optimize() {
|
default StringExpr optimize() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
default Stream<Expr> extractSideEffects() {
|
||||||
|
return Stream.of(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue