use of com.avaloq.tools.ddk.check.check.Member in project dsl-devkit by dsldevkit.
the class CheckCompiler method getMember.
/**
* Gets the Member this feature call references, if any.
*
* @param element
* to check
* @return The source model element (Member) for this feature call target, or null.
*/
private Member getMember(final JvmIdentifiableElement element) {
Iterator<EObject> modelElements = associations.getSourceElements(element).iterator();
Member member = null;
while (member == null && modelElements.hasNext()) {
EObject obj = modelElements.next();
if (obj instanceof Member) {
member = (Member) obj;
}
}
return member;
}
use of com.avaloq.tools.ddk.check.check.Member in project dsl-devkit by dsldevkit.
the class CheckCompiler method _toJavaExpression.
@Override
protected // CHECKSTYLE:OFF
void _toJavaExpression(final XAbstractFeatureCall expr, final ITreeAppendable b) {
// CHECKSTYLE:ON
FormalParameter parameter = getFormalParameter(expr);
if (parameter != null) {
// No Java entities are generated for this. Replace by a call to the getter function.
b.append(generatorNaming.catalogInstanceName(parameter)).append(".").append(generatorNaming.formalParameterGetterName(parameter));
b.append("(").append(getContextImplicitVariableName(expr)).append(")");
} else {
Member member = getMember(expr);
if (member != null) {
// Something isn't quite right in the Jvm model yet... or in the xbase compiler. Don't know what it is, but even if in an inner
// class, it generates "this.foo" instead of either just "foo" or "OuterClass.this.foo". Force it to produce the latter.
CheckCatalog catalog = EcoreUtil2.getContainerOfType(member, CheckCatalog.class);
String catalogName = generatorNaming.validatorClassName(catalog);
b.append(catalogName + ".this.").append(member.getName());
return;
}
super._toJavaExpression(expr, b);
}
}
Aggregations