private static boolean isVariableBoundIn(SpecializationData specialization, DSLExpression expression, String localName, LocalContext currentValues) throws AssertionError { Map<Variable, LocalVariable> boundValues = bindExpressionValues(expression, specialization, currentValues); for (Variable var : expression.findBoundVariables()) { LocalVariable target = boundValues.get(var); if (target != null && localName.equals(target.getName())) { return true; } } return false; }
if (!guardMatch.getExpression().findBoundVariables().isEmpty()) { iterator.remove();
if (!guardMatch.getExpression().findBoundVariables().isEmpty()) { iterator.remove();
private static Map<Variable, LocalVariable> bindExpressionValues(DSLExpression expression, SpecializationData specialization, LocalContext currentValues) throws AssertionError { Map<Variable, LocalVariable> bindings = new HashMap<>(); Set<Variable> boundVariables = expression.findBoundVariables(); if (specialization == null && !boundVariables.isEmpty()) { throw new AssertionError("Cannot bind guard variable in non-specialization group. yet."); } // resolve bindings for local context for (Variable variable : boundVariables) { Parameter resolvedParameter = specialization.findByVariable(variable.getResolvedVariable()); if (resolvedParameter != null) { LocalVariable localVariable; if (resolvedParameter.getSpecification().isSignature()) { NodeExecutionData execution = resolvedParameter.getSpecification().getExecution(); localVariable = currentValues.getValue(execution); } else { localVariable = currentValues.get(resolvedParameter.getLocalName()); } if (localVariable != null) { bindings.put(variable, localVariable); } } } return bindings; }
private Map<Variable, LocalVariable> bindExpressionValues(FrameState frameState, DSLExpression expression, SpecializationData specialization) throws AssertionError { Map<Variable, LocalVariable> bindings = new HashMap<>(); Set<Variable> boundVariables = expression.findBoundVariables(); if (specialization == null && !boundVariables.isEmpty()) { throw new AssertionError("Cannot bind guard variable in non-specialization group. yet.");