RuntimeException: Cannot root twice [message #1740970] |
Sun, 21 August 2016 18:07  |
Eclipse User |
|
|
|
In my JvmModelInferrer, I want to determine if the XExpression associated to a function is a type literal.
public class FakeJvmModelInferrer extends XtendJvmModelInferrer {
@Inject private TypesFactory typesFactory;
@Inject private IJvmModelAssociator associator;
protected void transform(final XtendFunction source, final JvmGenericType container, boolean allowDispatch) {
final JvmOperation operation = this.typesFactory.createJvmOperation();
container.getMembers().add(operation);
this.associator.associatePrimary(source, operation);
operation.setSimpleName(source.getName());
setBody(operation, source.getExpression());
final List<XFeatureCall> calls = EcoreUtil2.getAllContentsOfType(source.getExpression(), XFeatureCall.class);
boolean isType = calls.isEmpty() ? false : calls.get(0).isTypeLiteral();
if (isType) {
// Append annotation
}
}
}
The call to isTypeLiteral function causes the following exception:
java.lang.RuntimeException: Cannot root twice
at org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver$1.add(DefaultBatchTypeResolver.java:73)
at org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver$1.add(DefaultBatchTypeResolver.java:1)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$1.add(LogicalContainerAwareReentrantTypeResolver.java:325)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$1.add(LogicalContainerAwareReentrantTypeResolver.java:1)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.recordExpressions(LogicalContainerAwareReentrantTypeResolver.java:416)
at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver._recordExpressions(LogicalContainerAwareReentrantTypeResolver.java:446)
What is wrong in my approach?
|
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.08286 seconds