@Aspect(className=typeof(StateMachine)) // This is my active annotation
class StateMachineAspect {
LinkedList<String> events = new LinkedList<String>()
String currentEvent = ""
def public void step () { // The active annotation includes the parameter _self to this method!
println(_self.currentEvent) // So, I can actually use that parameter in the body of the method :D
// In fact, I do not have any problems if I use this variable here. The
// parse/serialize process works correctly!
// As you can see, this parameter can be used as the reserved word "this"
// In the context of my project, we need this parameter instead of the "this"
while(_self.events.size() > 0){ // MY PROBLEM APPEARS IN THIS LINE, IN THE BOOLEAN EXPRESSION OF THE WHILE
_self.currentEvent = _self.events.pop
var ArrayList<Transition> transitions = _self.calculateTransitions();
transitions.get(0).fire()
}
}
Now, you can find some instructions that produce errors and some others that don't! As you can see, it is really difficult to realize what the problem actually is!
It fails! while(_self.events.size() > 0){ ...
It works! var LinkedList<String> myArray = _self.events
while(myArray.size() > 0){ ...
It fails! while(_self.events.size().compareTo(0) == -1){ ...
It works! var LinkedList<String> myArray = _self.events
while(myArray.size().compareTo(0) == -1){ ...
It works! while(_self.events.size().equals(0)){ ... // :O Yes, it works!
It works! var LinkedList<String> myArray = _self.events
while(myArray.size().equals(0)){ ...
It works! while(1 == 2){ ...
As you can see, the problem seems to be only the binary expressions in the presence of the _self variable. I would appreciate some ideas about how can I proceed to solve this issue.
Best regards,
By the way... the exception I get is in the following:
java.lang.RuntimeException: Operator [super] is not supported.
Semantic Object: XtendFile.xtendTypes[0]->XtendClass'StateMachineAspect'.members[5]->XtendFunction'step'.expression->XBlockExpression.expressions[1]->XWhileExpression.predicate->XBinaryOperation
Context: XExpression
at org.eclipse.xtext.serializer.diagnostic.ISerializationDiagnostic$ExceptionThrowingAcceptor.accept(ISerializationDiagnostic.java:70)
at org.eclipse.xtext.xbase.serializer.XbaseSemanticSequencer.sequence_XAdditiveExpression_XAndExpression_XAssignment_XEqualityExpression_XMultiplicativeExpression_XOrExpression_XOtherOperatorExpression_XRelationalExpression(XbaseSemanticSequencer.java:138)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:216)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptEObjectRuleCall(SequenceFeeder.java:299)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptRuleCall(SequenceFeeder.java:325)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.accept(SequenceFeeder.java:215)
at org.eclipse.xtext.xbase.serializer.AbstractXbaseSemanticSequencer.sequence_XWhileExpression(AbstractXbaseSemanticSequencer.java:1405)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:1051)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptEObjectRuleCall(SequenceFeeder.java:299)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptRuleCall(SequenceFeeder.java:325)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.accept(SequenceFeeder.java:239)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.accept(BacktrackingSemanticSequencer.java:396)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.createSequence(BacktrackingSemanticSequencer.java:441)
at org.eclipse.xtext.xbase.serializer.AbstractXbaseSemanticSequencer.sequence_XBlockExpression(AbstractXbaseSemanticSequencer.java:1060)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:251)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptEObjectRuleCall(SequenceFeeder.java:299)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptRuleCall(SequenceFeeder.java:325)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.accept(SequenceFeeder.java:222)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.accept(BacktrackingSemanticSequencer.java:403)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.createSequence(BacktrackingSemanticSequencer.java:441)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.sequence_Member(AbstractXtendSemanticSequencer.java:1432)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:1200)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptEObjectRuleCall(SequenceFeeder.java:299)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptRuleCall(SequenceFeeder.java:325)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.accept(SequenceFeeder.java:239)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.accept(BacktrackingSemanticSequencer.java:396)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.createSequence(BacktrackingSemanticSequencer.java:441)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.sequence_Type(AbstractXtendSemanticSequencer.java:1607)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:1150)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptEObjectRuleCall(SequenceFeeder.java:299)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.acceptRuleCall(SequenceFeeder.java:325)
at org.eclipse.xtext.serializer.acceptor.SequenceFeeder.accept(SequenceFeeder.java:239)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.accept(BacktrackingSemanticSequencer.java:396)
at org.eclipse.xtext.serializer.sequencer.BacktrackingSemanticSequencer.createSequence(BacktrackingSemanticSequencer.java:441)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.sequence_File(AbstractXtendSemanticSequencer.java:1295)
at org.eclipse.xtend.core.serializer.AbstractXtendSemanticSequencer.createSequence(AbstractXtendSemanticSequencer.java:1184)
at org.eclipse.xtext.serializer.impl.Serializer.serialize(Serializer.java:85)
at org.eclipse.xtext.serializer.impl.Serializer.serialize(Serializer.java:108)
at org.eclipse.xtext.serializer.impl.Serializer.serialize(Serializer.java:130)
at org.eclipse.xtext.resource.XtextResource.doSave(XtextResource.java:344)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:1430)
at org.eclipse.emf.ecore.resource.impl.ResourceImpl.save(ResourceImpl.java:999)
at behavioralMerging.extension.XtendClassLoader.saveXtendFile(XtendClassLoader.java:65)
at behavioralMerging.extension.BehavioralMergingExtensionTestsStandAloneRuntime.testBehavioralMergingExtension(BehavioralMergingExtensionTestsStandAloneRuntime.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:243)
at junit.framework.TestSuite.run(TestSuite.java:238)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
--
You received this message because you are subscribed to the Google Groups "Xtend Programming Language" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xtend-lang+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.