- Notifications
You must be signed in to change notification settings - Fork 7
Closed
Labels
Description
If there are multiple annotations @EntryPoint in the test cases, the testing result may be wrong.
e.g.
- Test case:
package p; import java.util.HashSet; import edu.cuny.hunter.streamrefactoring.annotations.*; class A { @EntryPoint void m() { new HashSet().stream().count(); } @EntryPoint void n() { new HashSet().stream().count(); } } Testing result:
WARNING: Require terminal operations: new HashSet().stream() edu.cuny.hunter.streamrefactoring.core.analysis.RequireTerminalOperationException: Require terminal operations. at edu.cuny.hunter.streamrefactoring.core.analysis.StreamStateMachine.discoverTerminalOperations(StreamStateMachine.java:842) at edu.cuny.hunter.streamrefactoring.core.analysis.StreamStateMachine.start(StreamStateMachine.java:486) at edu.cuny.hunter.streamrefactoring.core.analysis.Stream.<init>(Stream.java:216) at edu.cuny.hunter.streamrefactoring.core.analysis.StreamAnalysisVisitor.visit(StreamAnalysisVisitor.java:61) at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2844) at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:234) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2844) at org.eclipse.jdt.core.dom.ExpressionStatement.accept0(ExpressionStatement.java:145) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2867) at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) - Test case:
package p; import java.util.HashSet; import java.util.stream.*; import edu.cuny.hunter.streamrefactoring.annotations.*; class A { @EntryPoint Stream<Object> m() { Stream<Object> stream = new HashSet<>().parallelStream(); return stream; } @EntryPoint void n() { Stream<Object> s = m(); s.count(); } } Test result:
!ENTRY org.eclipse.jdt.ui 4 10001 2017-11-30 14:53:24.570 !MESSAGE Internal Error !STACK 0 java.lang.IllegalStateException: Unexpected number of nodes: 2 at edu.cuny.hunter.streamrefactoring.core.analysis.Stream.getEnclosingMethodNode(Stream.java:651) at edu.cuny.hunter.streamrefactoring.core.analysis.Stream.inferInitialOrdering(Stream.java:609) at edu.cuny.hunter.streamrefactoring.core.analysis.Stream.<init>(Stream.java:194) at edu.cuny.hunter.streamrefactoring.core.analysis.StreamAnalysisVisitor.visit(StreamAnalysisVisitor.java:61) at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2844) at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2867) at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267) at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2796) at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2867)