Skip to content

Issue for multiple entry point problem #122

@yiming-tang-cs

Description

@yiming-tang-cs

If there are multiple annotations @EntryPoint in the test cases, the testing result may be wrong.

e.g.

  1. 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) 
  1. 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) 

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions