Skip to content

Duplicate key in map while calculating stateful intermediate operations #52

@khatchad

Description

@khatchad

Encountered a duplicate key error while processing the paper's motivating example.

IR:

3 = new <Application,Ljava/util/HashSet>@0 invokespecial < Application, Ljava/util/HashSet, <init>()V > 3 @4 exception:4 6 = invokeinterface < Application, Ljava/util/Collection, stream()Ljava/util/stream/Stream; > 3 @9 exception:5 8 = invokestatic < Application, Ljava/lang/invoke/LambdaMetafactory, apply()Ljava/util/function/Function; > @14 exception:7 10 = invokestatic < Application, Ljava/util/Comparator, comparing(Ljava/util/function/Function;)Ljava/util/Comparator; > 8 @19 exception:9 12 = invokeinterface < Application, Ljava/util/stream/Stream, sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream; > 6,10 @22 exception:11 14 = invokestatic < Application, Ljava/util/stream/Collectors, toList()Ljava/util/stream/Collector; > @27 exception:13 16 = invokeinterface < Application, Ljava/util/stream/Stream, collect(Ljava/util/stream/Collector;)Ljava/lang/Object; > 12,14 @30 exception:15 17 = checkcast <Application,Ljava/util/List>16 <Application,Ljava/util/List> 18 = new <Application,Ljava/util/ArrayList>@39 invokespecial < Application, Ljava/util/ArrayList, <init>()V > 18 @43 exception:19 21 = invokeinterface < Application, Ljava/util/Collection, parallelStream()Ljava/util/stream/Stream; > 18 @48 exception:20 3 = new <Application,Ljava/util/HashSet>@0 invokespecial < Application, Ljava/util/HashSet, <init>()V > 3 @4 exception:4 6 = invokeinterface < Application, Ljava/util/Collection, stream()Ljava/util/stream/Stream; > 3 @9 exception:5 8 = invokestatic < Application, Ljava/lang/invoke/LambdaMetafactory, apply()Ljava/util/function/Function; > @14 exception:7 10 = invokestatic < Application, Ljava/util/Comparator, comparing(Ljava/util/function/Function;)Ljava/util/Comparator; > 8 @19 exception:9 12 = invokeinterface < Application, Ljava/util/stream/Stream, sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream; > 6,10 @22 exception:11 14 = invokestatic < Application, Ljava/util/stream/Collectors, toList()Ljava/util/stream/Collector; > @27 exception:13 16 = invokeinterface < Application, Ljava/util/stream/Stream, collect(Ljava/util/stream/Collector;)Ljava/lang/Object; > 12,14 @30 exception:15 17 = checkcast <Application,Ljava/util/List>16 <Application,Ljava/util/List> 18 = new <Application,Ljava/util/ArrayList>@39 invokespecial < Application, Ljava/util/ArrayList, <init>()V > 18 @43 exception:19 21 = invokeinterface < Application, Ljava/util/Collection, parallelStream()Ljava/util/stream/Stream; > 18 @48 exception:20 

Error:

!ENTRY org.eclipse.jdt.ui 4 10001 2017-09-15 13:55:15.157 !MESSAGE Internal Error !STACK 0 java.lang.IllegalStateException: Duplicate key true	at java.util.stream.Collectors.lambda$throwingMerger$0(Collectors.java:133)	at java.util.HashMap.merge(HashMap.java:1253)	at java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320)	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)	at java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1548)	at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)	at java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:270)	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)	at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1691)	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)	at edu.cuny.hunter.streamrefactoring.core.analysis.StreamStateMachine.start(StreamStateMachine.java:454)	at edu.cuny.hunter.streamrefactoring.core.analysis.Stream.<init>(Stream.java:204)	at edu.cuny.hunter.streamrefactoring.core.analysis.StreamAnalysisVisitor.visit(StreamAnalysisVisitor.java:49)	at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:231)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)	at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:234)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)	at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:234)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)	at org.eclipse.jdt.core.dom.MethodInvocation.accept0(MethodInvocation.java:234)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)	at org.eclipse.jdt.core.dom.VariableDeclarationFragment.accept0(VariableDeclarationFragment.java:263)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)	at org.eclipse.jdt.core.dom.VariableDeclarationStatement.accept0(VariableDeclarationStatement.java:267)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)	at org.eclipse.jdt.core.dom.Block.accept0(Block.java:137)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChild(ASTNode.java:2759)	at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:635)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)	at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)	at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212)	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)	at edu.cuny.hunter.streamrefactoring.core.refactorings.ConvertToParallelStreamRefactoringProcessor.checkFinalConditions(ConvertToParallelStreamRefactoringProcessor.java:191)	at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:222)	at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:162)	at edu.cuny.hunter.streamrefactoring.eval.handlers.EvaluateConvertToParallelStreamRefactoringHandler.lambda$0(EvaluateConvertToParallelStreamRefactoringHandler.java:135)	at org.eclipse.core.runtime.jobs.Job$1.run(Job.java:161)	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56) 

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions