Skip to content

Commit e86936b

Browse files
committed
Refactor BExpr.members() to take List<String> instead of String...
1 parent 86648bc commit e86936b

File tree

15 files changed

+54
-22
lines changed

15 files changed

+54
-22
lines changed

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BCall.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -17,6 +19,8 @@ public final class BCall extends BOperation {
1719
private static final int LAMBDA_INDEX = 0;
1820
private static final int ARGUMENTS_INDEX = 1;
1921

22+
private static final List<String> MEMBER_NAMES = list("lambda", "arguments");
23+
2024
private final Function0<BSubExprs, BytecodeException> subExprs =
2125
Function0.memoizer(this::fetchAndValidateSubExprs);
2226

@@ -31,7 +35,7 @@ public BCallKind kind() {
3135
}
3236

3337
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
34-
var members = members("lambda", "arguments");
38+
var members = members(MEMBER_NAMES);
3539
var lambda = members.get(LAMBDA_INDEX).asExpr(BLambdaType.class);
3640
var lambdaType = (BLambdaType) lambda.evaluationType();
3741
checkMemberEvaluationType("lambda.resultType", lambdaType.result(), evaluationType());

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BChoice.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -18,6 +20,8 @@ public final class BChoice extends BValue {
1820
private static final int INDEX_INDEX = 0;
1921
private static final int CHOSEN_INDEX = 1;
2022

23+
private static final List<String> MEMBER_NAMES = list("index", "chosen");
24+
2125
private final Function0<Components, BytecodeException> components =
2226
Function0.memoizer(this::fetchAndValidateComponents);
2327

@@ -37,7 +41,7 @@ public BChoiceType type() {
3741
}
3842

3943
private Components fetchAndValidateComponents() throws BytecodeException {
40-
var members = members("index", "chosen");
44+
var members = members(MEMBER_NAMES);
4145
var index = members.get(INDEX_INDEX).asInstanceOf(BInt.class);
4246

4347
int i = index.toJavaBigInteger().intValue();

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BChoose.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -18,6 +20,8 @@ public final class BChoose extends BOperation {
1820
public static final int INDEX_INDEX = 0;
1921
public static final int CHOSEN_INDEX = 1;
2022

23+
private static final List<String> MEMBER_NAMES = list("index", "chosen");
24+
2125
private final Function0<BSubExprs, BytecodeException> subExprs =
2226
Function0.memoizer(this::fetchAndValidateSubExprs);
2327

@@ -37,7 +41,7 @@ public BChooseKind kind() {
3741
}
3842

3943
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
40-
var members = members("index", "chosen");
44+
var members = members(MEMBER_NAMES);
4145
var index = members.get(INDEX_INDEX).asInstanceOf(BInt.class);
4246

4347
int i = index.toJavaBigInteger().intValue();

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BExpr.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

3-
import static org.smoothbuild.common.collect.List.list;
43
import static org.smoothbuild.common.collect.Maybe.none;
54
import static org.smoothbuild.common.collect.Maybe.some;
65
import static org.smoothbuild.virtualmachine.bytecode.expr.Helpers.invokeAndChainBytecodeException;
@@ -72,13 +71,9 @@ public BKind kind() {
7271

7372
public abstract String exprToString() throws BytecodeException;
7473

75-
protected List<Member> members(String... names) throws BytecodeException {
76-
var chain = readDataAsHashChain(names.length);
77-
Member[] array = new Member[names.length];
78-
for (var i = 0; i < array.length; i++) {
79-
array[i] = member(names[i], chain.get(i));
80-
}
81-
return list(array);
74+
protected List<Member> members(List<String> list) throws BytecodeException {
75+
var hashChain = readDataAsHashChain(list.size());
76+
return list.zip(hashChain, this::member);
8277
}
8378

8479
private List<Hash> readDataAsHashChain(int membersCount) throws BExprDbException {

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BFold.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.smoothbuild.common.collect.List.list;
55

66
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
78
import org.smoothbuild.common.function.Function0;
89
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
910
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -21,6 +22,8 @@ public final class BFold extends BOperation {
2122
private static final int INITIAL_INDEX = 1;
2223
private static final int FOLDER_INDEX = 2;
2324

25+
private static final List<String> MEMBER_NAMES = list("array", "initial", "folder");
26+
2427
private final Function0<BSubExprs, BytecodeException> subExprs =
2528
Function0.memoizer(this::fetchAndValidateSubExprs);
2629

@@ -40,7 +43,7 @@ public BType evaluationType() {
4043
}
4144

4245
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
43-
var members = members("array", "initial", "folder");
46+
var members = members(MEMBER_NAMES);
4447
var array = members.get(ARRAY_INDEX).asExpr(BArrayType.class);
4548
var arrayType = (BArrayType) array.evaluationType();
4649
var initial = members.get(INITIAL_INDEX).asExpr();

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BIf.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -18,6 +20,8 @@ public final class BIf extends BOperation {
1820
private static final int THEN_INDEX = 1;
1921
private static final int ELSE_INDEX = 2;
2022

23+
private static final List<String> MEMBER_NAMES = list("condition", "then", "else");
24+
2125
private final Function0<BSubExprs, BytecodeException> subExprs =
2226
Function0.memoizer(this::fetchAndValidateSubExprs);
2327

@@ -27,7 +31,7 @@ public BIf(MerkleRoot merkleRoot, BExprDb exprDb) {
2731
}
2832

2933
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
30-
var members = members("condition", "then", "else");
34+
var members = members(MEMBER_NAMES);
3135
var condition = members.get(CONDITION_INDEX).asExpr(kindDb().bool());
3236
var then_ = members.get(THEN_INDEX).asExpr(evaluationType());
3337
var else_ = members.get(ELSE_INDEX).asExpr(evaluationType());

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BInvoke.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -19,6 +21,8 @@ public final class BInvoke extends BOperation {
1921
public static final int IS_PURE_INDEX = 1;
2022
public static final int ARGUMENTS_INDEX = 2;
2123

24+
private static final List<String> MEMBER_NAMES = list("method", "isPure", "arguments");
25+
2226
private final Function0<BSubExprs, BytecodeException> subExprs =
2327
Function0.memoizer(this::fetchAndValidateSubExprs);
2428

@@ -28,7 +32,7 @@ public BInvoke(MerkleRoot merkleRoot, BExprDb exprDb) {
2832
}
2933

3034
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
31-
var members = members("method", "isPure", "arguments");
35+
var members = members(MEMBER_NAMES);
3236
var method = members.get(METHOD_INDEX).asExpr(kindDb().method());
3337
var isPure = members.get(IS_PURE_INDEX).asExpr(kindDb().bool());
3438
var arguments = members.get(ARGUMENTS_INDEX).asExpr(BTupleType.class);

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BMap.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import static org.smoothbuild.common.collect.List.list;
55

66
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
78
import org.smoothbuild.common.function.Function0;
89
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
910
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -19,6 +20,8 @@ public final class BMap extends BOperation {
1920
private static final int ARRAY_INDEX = 0;
2021
private static final int MAPPER_INDEX = 1;
2122

23+
private static final List<String> MEMBER_NAMES = list("array", "mapper");
24+
2225
private final Function0<BSubExprs, BytecodeException> subExprs =
2326
Function0.memoizer(this::fetchAndValidateSubExprs);
2427

@@ -38,7 +41,7 @@ public BArrayType evaluationType() {
3841
}
3942

4043
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
41-
var members = members("array", "mapper");
44+
var members = members(MEMBER_NAMES);
4245
var array = members.get(ARRAY_INDEX).asExpr(BArrayType.class);
4346
var arrayType = (BArrayType) array.evaluationType();
4447
var expectedMapperEvaluationType =

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BPick.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -16,6 +18,8 @@ public final class BPick extends BOperation {
1618
public static final int PICKABLE_INDEX = 0;
1719
public static final int INDEX_INDEX = 1;
1820

21+
private static final List<String> MEMBER_NAMES = list("pickable", "index");
22+
1923
private final Function0<BSubExprs, BytecodeException> subExprs =
2024
Function0.memoizer(this::fetchAndValidateSubExprs);
2125

@@ -30,7 +34,7 @@ public BPickKind kind() {
3034
}
3135

3236
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
33-
var members = members("pickable", "index");
37+
var members = members(MEMBER_NAMES);
3438
var pickable = members.get(PICKABLE_INDEX).asExpr(kindDb().array(evaluationType()));
3539
var index = members.get(INDEX_INDEX).asExpr(kindDb().int_());
3640
return new BSubExprs(pickable, index);

src/virtual-machine/src/main/java/org/smoothbuild/virtualmachine/bytecode/expr/base/BSelect.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package org.smoothbuild.virtualmachine.bytecode.expr.base;
22

33
import static com.google.common.base.Preconditions.checkArgument;
4+
import static org.smoothbuild.common.collect.List.list;
45

56
import org.smoothbuild.common.base.ToStringBuilder;
7+
import org.smoothbuild.common.collect.List;
68
import org.smoothbuild.common.function.Function0;
79
import org.smoothbuild.virtualmachine.bytecode.BytecodeException;
810
import org.smoothbuild.virtualmachine.bytecode.expr.BExprDb;
@@ -19,6 +21,8 @@ public final class BSelect extends BOperation {
1921
public static final int SELECTABLE_INDEX = 0;
2022
public static final int INDEX_INDEX = 1;
2123

24+
private static final List<String> MEMBER_NAMES = list("selectable", "index");
25+
2226
private final Function0<BSubExprs, BytecodeException> subExprs =
2327
Function0.memoizer(this::fetchAndValidateSubExprs);
2428

@@ -33,7 +37,7 @@ public BSelectKind kind() {
3337
}
3438

3539
private BSubExprs fetchAndValidateSubExprs() throws BytecodeException {
36-
var members = members("selectable", "index");
40+
var members = members(MEMBER_NAMES);
3741
var selectable = members.get(SELECTABLE_INDEX).asExpr(BTupleType.class);
3842
var index = members.get(INDEX_INDEX).asInstanceOf(BInt.class);
3943
int i = index.toJavaBigInteger().intValue();

0 commit comments

Comments
 (0)