private void reportStrangeVariableRef(VariableReference ref, CompareConstraint constraint) { throw new IllegalStateException( // this should never come up "Strange reference to variable " + ref.getVar() + " in " + constraint.getClass().getName()); }
VariableValue value = (VariableValue) parameter.getValue(); if (value.getValue().getVariable() == null) { error(String.format("Unknown variable %s", value.getValue().getVar()), parameter, PatternLanguagePackage.Literals.ANNOTATION_PARAMETER__VALUE, annotation.getParameters() .indexOf(parameter), IssueCodes.MISTYPED_ANNOTATION_PARAMETER);
private String getConstantAsString(ValueReference ref) { if (ref instanceof IntValue) { return Integer.toString(((IntValue) ref).getValue()); } else if (ref instanceof DoubleValue) { return Double.toString(((DoubleValue) ref).getValue()); } else if (ref instanceof BoolValue) { return Boolean.toString(((BoolValue) ref).isValue()); } else if (ref instanceof StringValue) { return "\"" + ((StringValue) ref).getValue() + "\""; } else if (ref instanceof ListValue) { StringBuilder sb = new StringBuilder(); sb.append("{ "); for (Iterator<ValueReference> iter = ((ListValue) ref).getValues().iterator(); iter.hasNext();) { sb.append(getConstantAsString(iter.next())); if (iter.hasNext()) { sb.append(", "); } } sb.append("}"); return sb.toString(); } else if (ref instanceof VariableValue) { return ((VariableValue) ref).getValue().getVar(); } return "UNDEFINED"; }
if (obj instanceof VariableReference) { VariableReference varRef = (VariableReference) obj; String varName = varRef.getVar(); if ("_".equals(varName)) { varName = String.format("_<%d>", unnamedCounter);
private static Object getValue(ValueReference ref) { Object value = null; if (ref instanceof BoolValue) { value = ((BoolValue)ref).isValue(); } else if (ref instanceof DoubleValue) { value = ((DoubleValue)ref).getValue(); } else if (ref instanceof IntValue) { value = ((IntValue)ref).getValue(); } else if (ref instanceof StringValue) { value = ((StringValue)ref).getValue(); } else if (ref instanceof VariableReference) { value = new ParameterReference(((VariableReference) ref).getVar()); } else if (ref instanceof VariableValue) { value = new ParameterReference(((VariableValue)ref).getValue().getVar()); } else if (ref instanceof ListValue) { value = Lists.transform(((ListValue) ref).getValues(), new Function<ValueReference, Object>() { @Override public Object apply(ValueReference ref) { return getValue(ref); } }); } else { throw new UnsupportedOperationException("Unknown attribute parameter type"); } return value; }
/** * Contexts: * VariableReference returns VariableReference * * Constraint: * var=ID */ protected void sequence_VariableReference(ISerializationContext context, VariableReference semanticObject) { if (errorAcceptor != null) { if (transientValues.isValueTransient(semanticObject, PatternLanguagePackage.Literals.VARIABLE_REFERENCE__VAR) == ValueTransient.YES) errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, PatternLanguagePackage.Literals.VARIABLE_REFERENCE__VAR)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); feeder.accept(grammarAccess.getVariableReferenceAccess().getVarIDTerminalRuleCall_0(), semanticObject.getVar()); feeder.finish(); }