public static final class AuxiliaryContractBuilders.ValidityProgramConstructor
extends java.lang.Object
block'
from block
(see Wacker 2012, 3.3).construct()
Modifier and Type | Field and Description |
---|---|
private AuxiliaryContract.Variables |
alreadyDeclared
The subset of variables that have already been declared.
|
private StatementBlock |
block |
private ProgramVariable |
exceptionParameter
The exception variable.
|
private java.lang.Iterable<Label> |
labels |
private Services |
services
Services.
|
private java.util.List<Statement> |
statements
Statements in the program.
|
private AuxiliaryContract.Variables |
variables |
Constructor and Description |
---|
ValidityProgramConstructor(java.lang.Iterable<Label> labels,
StatementBlock block,
AuxiliaryContract.Variables variables,
ProgramVariable exceptionParameter,
Services services) |
ValidityProgramConstructor(java.lang.Iterable<Label> labels,
StatementBlock block,
AuxiliaryContract.Variables variables,
ProgramVariable exceptionParameter,
Services services,
AuxiliaryContract.Variables alreadyDeclared) |
Modifier and Type | Method and Description |
---|---|
StatementBlock |
construct() |
private void |
declareExceptionNull()
Adds a statement that declares the exception variable if necessary and set its value to
null . |
private void |
declareFlagsFalse()
Adds statements to declare all flags that have not yet been declared and set their values
to false.
|
private void |
declareResultDefault()
Adds a statement that declares the result variable if necessary and set its value to the
default for its type.
|
private void |
executeBlockSafely()
Makes sure that the block never terminates abruptly.
|
private Statement |
label(StatementBlock block,
java.lang.Iterable<Label> labels) |
private boolean |
occursReturnAndIsReturnTypeNotVoid() |
private StatementBlock |
replaceOuterBreaksContinuesAndReturns(StatementBlock block,
Label breakOutLabel) |
private Statement |
wrapInTryCatch(Statement labeledBlock,
ProgramVariable exceptionParameter) |
private final java.lang.Iterable<Label> labels
AuxiliaryContract.getLabels()
private final StatementBlock block
AuxiliaryContract.getBlock()
private final AuxiliaryContract.Variables variables
AuxiliaryContract.getVariables()
private final AuxiliaryContract.Variables alreadyDeclared
private final Services services
private final java.util.List<Statement> statements
private final ProgramVariable exceptionParameter
public ValidityProgramConstructor(java.lang.Iterable<Label> labels, StatementBlock block, AuxiliaryContract.Variables variables, ProgramVariable exceptionParameter, Services services)
labels
- all labels belonging to the block.block
- the block.variables
- the variables.exceptionParameter
- the exception variable.services
- services.public ValidityProgramConstructor(java.lang.Iterable<Label> labels, StatementBlock block, AuxiliaryContract.Variables variables, ProgramVariable exceptionParameter, Services services, AuxiliaryContract.Variables alreadyDeclared)
labels
- all labels belonging to the block.block
- the block.variables
- the variables.exceptionParameter
- the exception variable.services
- services.alreadyDeclared
- the subset of variables that have already been declared.public StatementBlock construct()
private void declareFlagsFalse()
private void declareResultDefault()
private boolean occursReturnAndIsReturnTypeNotVoid()
true
iff there is a result.private void declareExceptionNull()
null
.private void executeBlockSafely()
private Statement label(StatementBlock block, java.lang.Iterable<Label> labels)
block
- a block.labels
- labels that should be added to the block.private StatementBlock replaceOuterBreaksContinuesAndReturns(StatementBlock block, Label breakOutLabel)
block
- a block.breakOutLabel
- a label belonging to the block.OuterBreakContinueAndReturnReplacer
private Statement wrapInTryCatch(Statement labeledBlock, ProgramVariable exceptionParameter)
labeledBlock
- the labeled block.exceptionParameter
- the exception variable.