Skip to content
Snippets Groups Projects
Verified Commit 0b981cb8 authored by Miles Vella's avatar Miles Vella
Browse files

Merge remote-tracking branch 'origin/master' into freetypes

parents 110934b8 e6eb2e6d
Branches
No related tags found
No related merge requests found
Showing with 35 additions and 7 deletions
......@@ -173,3 +173,6 @@ benchmarks/model_checking/ProB/lib
benchmarks/model_checking/ProB/stdlib
btypes_primitives/src/main/rust/bmachine/src/**
btypes_big_integer/src/main/rust/bmachine/src/**
/*.json
!/package.json
!/tsconfig.json
......@@ -313,17 +313,17 @@ public class MachineConstantsOptimizer implements AbstractVisitor<Node, Void> {
@Override
public Node visitRecordNode(RecordNode node, Void expected) {
return node;
return new RecordNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
}
@Override
public Node visitStructNode(StructNode node, Void expected) {
return node;
return new StructNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(expr, expected)).collect(Collectors.toList()));
}
@Override
public Node visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
return node;
return new RecordFieldAccessNode(node.getSourceCodePosition(), (ExprNode) visitExprNode(node.getRecord(), expected), node.getIdentifier());
}
@Override
......
......@@ -271,16 +271,19 @@ public class MachineConstantsPreprocessor implements AbstractVisitor<Node, Void>
@Override
public Node visitRecordNode(RecordNode node, Void expected) {
node.getExpressions().forEach(e -> visitExprNode(e, expected));
return null;
}
@Override
public Node visitStructNode(StructNode node, Void expected) {
node.getExpressions().forEach(e -> visitExprNode(e, expected));
return null;
}
@Override
public Node visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
visitExprNode(node.getRecord(), expected);
return null;
}
......
......@@ -348,16 +348,19 @@ public class IdentifierAnalyzer implements AbstractVisitor<Void, Void> {
@Override
public Void visitRecordNode(RecordNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitStructNode(StructNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
visitExprNode(node.getRecord(), expected);
return null;
}
......
......@@ -433,8 +433,15 @@ public class ParallelConstructAnalyzer implements AbstractVisitor<Void, Void> {
return null;
}
/*
* When visiting a record node, local variables are added to ignored variables as they are not relevant for variables in a parallel substitution.
*/
@Override
public Void visitStructNode(StructNode node, Void expected) {
List<String> locals = node.getDeclarations().stream().map(DeclarationNode::getName).collect(Collectors.toList());
ignoredVariables.addAll(locals);
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
ignoredVariables.removeAll(locals);
return null;
}
......
......@@ -272,16 +272,19 @@ public class PrimedIdentifierAnalyzer implements AbstractVisitor<Void, Void> {
@Override
public Void visitRecordNode(RecordNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitStructNode(StructNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
visitExprNode(node.getRecord(), expected);
return null;
}
......
......@@ -416,16 +416,19 @@ public class LambdaFunctionGenerator implements AbstractVisitor<Void, Void> {
@Override
public Void visitRecordNode(RecordNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitStructNode(StructNode node, Void expected) {
node.getExpressions().forEach(expr -> visitExprNode(expr, expected));
return null;
}
@Override
public Void visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
visitExprNode(node.getRecord(), expected);
return null;
}
......
......@@ -750,7 +750,7 @@ public class MachineGenerator implements AbstractVisitor<String, Void> {
@Override
public String visitStructNode(StructNode node, Void expected) {
return "";
return expressionGenerator.visitExprNode(node);
}
@Override
......
......@@ -577,17 +577,23 @@ public class MachinePreprocessor implements AbstractVisitor<Node, Void> {
@Override
public Node visitRecordNode(RecordNode node, Void expected) {
return node;
RecordNode result = new RecordNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(node, expected)).collect(Collectors.toList()));
result.setType(node.getType());
return result;
}
@Override
public Node visitStructNode(StructNode node, Void expected) {
return node;
StructNode result = new StructNode(node.getSourceCodePosition(), node.getDeclarations(), node.getExpressions().stream().map(expr -> (ExprNode) visitExprNode(node, expected)).collect(Collectors.toList()));
result.setType(node.getType());
return result;
}
@Override
public Node visitRecordFieldAccessNode(RecordFieldAccessNode node, Void expected) {
return node;
RecordFieldAccessNode result = new RecordFieldAccessNode(node.getSourceCodePosition(), (ExprNode) visitExprNode(node.getRecord(), expected), node.getIdentifier());
result.setType(node.getType());
return result;
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment