Skip to content

Commit ebbf449

Browse files
committed
Add generic parameter to OperationEvaluator
1 parent e24c329 commit ebbf449

File tree

17 files changed

+32
-34
lines changed

17 files changed

+32
-34
lines changed

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/cache/CachingOperatorEvaluator.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public CachingOperatorEvaluator(
8282
this.memoryCache = memoryCache;
8383
}
8484

85-
public Output<BValue> evaluate(OperationEvaluator evaluator, List<BValue> bValues) {
85+
public Output<BValue> evaluate(OperationEvaluator<?> evaluator, List<BValue> bValues) {
8686
try {
8787
return evaluate(evaluator, toInput(bValues));
8888
} catch (IOException e) {
@@ -94,7 +94,7 @@ private BTuple toInput(List<BValue> depResults) throws BytecodeException {
9494
return bytecodeFactory.tuple(depResults);
9595
}
9696

97-
protected Output<BValue> evaluate(OperationEvaluator evaluator, BTuple subExprValues)
97+
protected Output<BValue> evaluate(OperationEvaluator<?> evaluator, BTuple subExprValues)
9898
throws IOException {
9999
var purity = evaluator.purity(subExprValues);
100100
var hash = computationHashFactory.create(evaluator.operation(), subExprValues);
@@ -112,7 +112,7 @@ protected Output<BValue> evaluate(OperationEvaluator evaluator, BTuple subExprVa
112112
}
113113

114114
private Promise<Maybe<BValue>> scheduleTaskWaitingForOtherTaskResult(
115-
OperationEvaluator evaluator, Purity purity, Promise<BOutput> otherTaskResult) {
115+
OperationEvaluator<?> evaluator, Purity purity, Promise<BOutput> otherTaskResult) {
116116
Task1<BOutput, BValue> task = (bOutput) -> {
117117
try {
118118
return newOutput(evaluator, bOutput, purity.cacheLevel());
@@ -124,7 +124,7 @@ private Promise<Maybe<BValue>> scheduleTaskWaitingForOtherTaskResult(
124124
}
125125

126126
private Output<BValue> readEvaluationFromDiskCache(
127-
OperationEvaluator evaluator, Hash hash, MutablePromise<BOutput> resultPromise)
127+
OperationEvaluator<?> evaluator, Hash hash, MutablePromise<BOutput> resultPromise)
128128
throws IOException {
129129
var bOutput = diskCache.read(hash, evaluator.operation().evaluationType());
130130
resultPromise.accept(bOutput);
@@ -133,7 +133,7 @@ private Output<BValue> readEvaluationFromDiskCache(
133133
}
134134

135135
private Output<BValue> evaluateNow(
136-
OperationEvaluator evaluator,
136+
OperationEvaluator<?> evaluator,
137137
BTuple subExprValues,
138138
MutablePromise<BOutput> resultPromise,
139139
Purity purity,
@@ -152,17 +152,17 @@ private Output<BValue> evaluateNow(
152152
}
153153

154154
private static Output<BValue> newOutput(
155-
OperationEvaluator evaluator, BOutput bOutput, Origin source) throws BytecodeException {
155+
OperationEvaluator<?> evaluator, BOutput bOutput, Origin source) throws BytecodeException {
156156
var report = newReport(evaluator, bOutput, source);
157157
return bOutput.value().map(v -> output(v, report)).getOr(output(report));
158158
}
159159

160-
private static Output<BValue> outputForException(OperationEvaluator evaluator, Exception e) {
160+
private static Output<BValue> outputForException(OperationEvaluator<?> evaluator, Exception e) {
161161
var fatal = fatal("Vm evaluation Task failed with exception:", e);
162162
return output(report(VM_EVALUATE, evaluator.trace(), list(fatal)));
163163
}
164164

165-
private static Report newReport(OperationEvaluator evaluator, BOutput bOutput, Origin origin)
165+
private static Report newReport(OperationEvaluator<?> evaluator, BOutput bOutput, Origin origin)
166166
throws BytecodeException {
167167
var logs = bOutput
168168
.storedLogs()

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BChooseEvaluator.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,10 @@
1111
import org.smoothbuild.virtualmachine.bytecode.expr.base.BInt;
1212
import org.smoothbuild.virtualmachine.bytecode.expr.base.BTuple;
1313
import org.smoothbuild.virtualmachine.bytecode.expr.base.BValue;
14-
import org.smoothbuild.virtualmachine.bytecode.kind.base.BChoiceType;
1514
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
1615
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
1716

18-
public final class BChooseEvaluator extends OperationEvaluator {
17+
public final class BChooseEvaluator extends OperationEvaluator<BChoose> {
1918
public BChooseEvaluator(BChoose choose, Trace trace) {
2019
super(choose, trace);
2120
}
@@ -25,8 +24,7 @@ public BOutput evaluate(BTuple subExprValues, Container container) throws Byteco
2524
var components = subExprValues.elements();
2625
var index = index(components);
2726
var chosen = chosen(components);
28-
var choice =
29-
container.factory().choice((BChoiceType) operation().evaluationType(), index, chosen);
27+
var choice = container.factory().choice(operation().evaluationType(), index, chosen);
3028
return bOutput(choice, container.messages());
3129
}
3230

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BCombineEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
1010
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
1111

12-
public final class BCombineEvaluator extends OperationEvaluator {
12+
public final class BCombineEvaluator extends OperationEvaluator<BCombine> {
1313
public BCombineEvaluator(BCombine combine, Trace trace) {
1414
super(combine, trace);
1515
}

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BInvokeEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
2424
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
2525

26-
public final class BInvokeEvaluator extends OperationEvaluator {
26+
public final class BInvokeEvaluator extends OperationEvaluator<BInvoke> {
2727
public BInvokeEvaluator(BInvoke invoke, Trace trace) {
2828
super(invoke, trace);
2929
}

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BOrderEvaluator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@
77
import org.smoothbuild.virtualmachine.bytecode.expr.base.BArray;
88
import org.smoothbuild.virtualmachine.bytecode.expr.base.BOrder;
99
import org.smoothbuild.virtualmachine.bytecode.expr.base.BTuple;
10-
import org.smoothbuild.virtualmachine.bytecode.kind.base.BArrayType;
1110
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
1211
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
1312

14-
public final class BOrderEvaluator extends OperationEvaluator {
13+
public final class BOrderEvaluator extends OperationEvaluator<BOrder> {
1514
public BOrderEvaluator(BOrder order, Trace trace) {
1615
super(order, trace);
1716
}
@@ -20,7 +19,7 @@ public BOrderEvaluator(BOrder order, Trace trace) {
2019
public BOutput evaluate(BTuple subExprValues, Container container) throws BytecodeException {
2120
BArray array = container
2221
.factory()
23-
.arrayBuilder((BArrayType) operation().evaluationType())
22+
.arrayBuilder(operation().evaluationType())
2423
.addAll(subExprValues.elements())
2524
.build();
2625
return bOutput(array, container.messages());

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BPickEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
1616
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
1717

18-
public final class BPickEvaluator extends OperationEvaluator {
18+
public final class BPickEvaluator extends OperationEvaluator<BPick> {
1919
public BPickEvaluator(BPick pick, Trace trace) {
2020
super(pick, trace);
2121
}

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/BSelectEvaluator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import org.smoothbuild.virtualmachine.evaluate.plugin.BOutput;
1515
import org.smoothbuild.virtualmachine.evaluate.plugin.Container;
1616

17-
public final class BSelectEvaluator extends OperationEvaluator {
17+
public final class BSelectEvaluator extends OperationEvaluator<BSelect> {
1818
public BSelectEvaluator(BSelect select, Trace trace) {
1919
super(select, trace);
2020
}

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/evaluator/OperationEvaluator.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@
1818
*
1919
* This class is thread-safe.
2020
*/
21-
public abstract sealed class OperationEvaluator
21+
public abstract sealed class OperationEvaluator<T extends BOperation>
2222
permits BChooseEvaluator,
2323
BCombineEvaluator,
2424
BInvokeEvaluator,
2525
BOrderEvaluator,
2626
BPickEvaluator,
2727
BSelectEvaluator {
28-
private final BOperation operation;
28+
private final T operation;
2929
private final Trace trace;
3030

31-
public OperationEvaluator(BOperation operation, Trace trace) {
31+
public OperationEvaluator(T operation, Trace trace) {
3232
this.operation = operation;
3333
this.trace = trace;
3434
}
3535

36-
public BOperation operation() {
36+
public T operation() {
3737
return operation;
3838
}
3939

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/job/BChooseJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public BChooseJob(JobContext jobContext, BChoose choose, List<Job> environment,
1515
}
1616

1717
@Override
18-
protected OperationEvaluator createEvaluator() {
18+
protected OperationEvaluator<BChoose> createEvaluator() {
1919
return new BChooseEvaluator(choose, trace());
2020
}
2121
}

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/evaluate/job/BCombineJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public BCombineJob(JobContext jobContext, BCombine combine, List<Job> environmen
1515
}
1616

1717
@Override
18-
protected OperationEvaluator createEvaluator() {
18+
protected OperationEvaluator<BCombine> createEvaluator() {
1919
return new BCombineEvaluator(combine, trace());
2020
}
2121
}

0 commit comments

Comments
 (0)