private void recordAssignment( Variable var, boolean isDeclaration, boolean uninitialized, boolean forceVariable, Expression expression) { if (var == null) { return; } if (!isDeclaration && var.isClosureSharedVariable()) { getState().put(var, VariableState.is_var); } VariableState variableState = getState().get(var); if (variableState == null) { variableState = uninitialized ? VariableState.is_uninitialized : VariableState.is_final; if (getTarget(var) instanceof Parameter) { variableState = VariableState.is_var; } } else { variableState = variableState.getNext(); } if (forceVariable) { variableState = VariableState.is_var; } getState().put(var, variableState); if (variableState == VariableState.is_var && callback != null) { callback.variableNotFinal(var, expression); } }
public boolean isEffectivelyFinal(Variable v) { VariableState state = getState().get(v); return (v instanceof Parameter && state == null) || (state != null && state.isFinal()); }
public void updateEncoding(String s) { int k = 0; Set<Variable> sortedVariables = new TreeSet<>(states.keySet()); for (Variable var : sortedVariables) states.put(var, VariableState.fromChar(s.charAt(k++))); }