
org.jnario.compiler.JnarioExpressionHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.jnario.standalone Show documentation
Show all versions of org.jnario.standalone Show documentation
The required libraries to execute Jnario specifications without Eclipse.
The newest version!
package org.jnario.compiler;
import static com.google.common.collect.Iterators.concat;
import static com.google.common.collect.Iterators.filter;
import static org.jnario.jvmmodel.DoubleArrowSupport.isDoubleArrow;
import static org.jnario.util.EObjects.allParents;
import java.util.Iterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend.core.typing.XtendExpressionHelper;
import org.eclipse.xtext.xbase.XAbstractFeatureCall;
import org.eclipse.xtext.xbase.XBinaryOperation;
import org.eclipse.xtext.xbase.XBooleanLiteral;
import org.eclipse.xtext.xbase.XClosure;
import org.eclipse.xtext.xbase.XExpression;
import org.eclipse.xtext.xbase.XNullLiteral;
import org.eclipse.xtext.xbase.XNumberLiteral;
import org.eclipse.xtext.xbase.XStringLiteral;
import org.eclipse.xtext.xbase.XTypeLiteral;
import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotation;
import org.jnario.Assertion;
public class JnarioExpressionHelper extends XtendExpressionHelper {
@Override
public boolean isShortCircuitOperation(XAbstractFeatureCall featureCall) {
// if (!(featureCall instanceof XBinaryOperation)) {
// return false;
// }
if (isInAssertion(featureCall)) {
return false;
}
return super.isShortCircuitOperation(featureCall);
}
protected boolean isInAssertion(XAbstractFeatureCall featureCall) {
Iterator context = concat(filterExpressions(featureCall.eAllContents()), filterExpressions(allParents(featureCall)));
while(context.hasNext()){
XExpression current = context.next();
if(isDoubleArrow((XExpression)current)){
return true;
}else if(current instanceof Assertion){
return true;
}else if (current instanceof XClosure) {
return false;
}
}
return false;
}
private Iterator filterExpressions(
Iterator elements) {
return filter(elements, XExpression.class);
}
public boolean isLiteral(XExpression expr) {
return expr instanceof XClosure
|| expr instanceof XStringLiteral
|| expr instanceof XTypeLiteral
|| expr instanceof XBooleanLiteral
|| expr instanceof XNumberLiteral
|| expr instanceof XNullLiteral
|| expr instanceof XAnnotation;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy