Issue 389 in groovypptest: increment counter in Map: compilation error

9 views
Skip to first unread message

groovy...@googlecode.com

unread,
Jul 14, 2011, 9:17:22 AM7/14/11
to groovyp...@googlegroups.com
Status: New
Owner: ----
Labels: Type-Defect Priority-Medium

New issue 389 by benoit.l...@gmail.com: increment counter in Map:
compilation error
http://code.google.com/p/groovypptest/issues/detail?id=389

What steps will reproduce the problem?

@Typed
package p
Map<String,Integer> counters = [:].withDefault{0}
"a,a,b,a,b,b,a,a,b,b,b,a,b,a".split("\\,").each {
counters[it]++
//counters[it] += 1 => works
}
println counters

this gives me compilation error:
java.lang.RuntimeException: Internal compiler error: Inconsistent pop
at
org.mbte.groovypp.compiler.bytecode.BytecodeStack.pop(BytecodeStack.java:45)
at
org.mbte.groovypp.compiler.bytecode.StackAwareMethodAdapter.popArgs(StackAwareMethodAdapter.java:679)
at
org.mbte.groovypp.compiler.bytecode.StackAwareMethodAdapter.visitMethodInsn(StackAwareMethodAdapter.java:606)
at
org.mbte.groovypp.compiler.asm.IcmpZeroImproverMethodAdapter.visitMethodInsn(IcmpZeroImproverMethodAdapter.java:84)
at
org.mbte.groovypp.compiler.asm.I2LL2IRemoverMethodAdapter.visitMethodInsn(I2LL2IRemoverMethodAdapter.java:75)
at
org.mbte.groovypp.compiler.asm.UnneededBoxingRemoverMethodAdapter.dropBoxing(UnneededBoxingRemoverMethodAdapter.java:38)
at
org.mbte.groovypp.compiler.asm.UnneededBoxingRemoverMethodAdapter.visitInsn(UnneededBoxingRemoverMethodAdapter.java:48)
at
org.mbte.groovypp.compiler.asm.UnneededDupStoreRemoverMethodAdapter.dropDupStore(UnneededDupStoreRemoverMethodAdapter.java:66)
at
org.mbte.groovypp.compiler.asm.UnneededDupStoreRemoverMethodAdapter.visitJumpInsn(UnneededDupStoreRemoverMethodAdapter.java:148)
at
org.mbte.groovypp.compiler.asm.UnneededDupXStoreRemoverMethodAdapter.visitJumpInsn(UnneededDupXStoreRemoverMethodAdapter.java:156)
at
org.mbte.groovypp.compiler.asm.UnneededLoadPopRemoverMethodAdapter.visitJumpInsn(UnneededLoadPopRemoverMethodAdapter.java:220)
at
org.mbte.groovypp.compiler.CompilerTransformer$6.compile(CompilerTransformer.java:628)
at
org.mbte.groovypp.compiler.bytecode.BytecodeExpr.visit(BytecodeExpr.java:39)
at
org.mbte.groovypp.compiler.transformers.CastExpressionTransformer$6.compile(CastExpressionTransformer.java:668)
at
org.mbte.groovypp.compiler.bytecode.BytecodeExpr.visit(BytecodeExpr.java:39)
at
org.mbte.groovypp.compiler.bytecode.ResolvedMethodBytecodeExpr.loadParams(ResolvedMethodBytecodeExpr.java:248)
at
org.mbte.groovypp.compiler.bytecode.ResolvedMethodBytecodeExpr.compile(ResolvedMethodBytecodeExpr.java:237)
at
org.mbte.groovypp.compiler.bytecode.BytecodeExpr.visit(BytecodeExpr.java:39)
at
org.mbte.groovypp.compiler.bytecode.ResolvedArrayLikeBytecodeExpr$18.compile(ResolvedArrayLikeBytecodeExpr.java:287)
at
org.mbte.groovypp.compiler.bytecode.BytecodeExpr.visit(BytecodeExpr.java:39)
at
org.mbte.groovypp.compiler.StaticCompiler.visitReturnStatement(StaticCompiler.java:726)
at
org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:47)
at
org.mbte.groovypp.compiler.StaticCompiler.visitBlockStatement(StaticCompiler.java:357)
at
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at
org.mbte.groovypp.compiler.StaticCompiler.visitBlockStatement(StaticCompiler.java:357)
at
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at
org.mbte.groovypp.compiler.StaticCompiler.execute(StaticCompiler.java:1212)
at
org.mbte.groovypp.compiler.StaticMethodBytecode.<init>(StaticMethodBytecode.java:73)
at
org.mbte.groovypp.compiler.StaticMethodBytecode.replaceMethodCode(StaticMethodBytecode.java:106)
at
org.mbte.groovypp.compiler.CompilerTransformer.replaceMethodCode(CompilerTransformer.java:175)
at org.mbte.groovypp.compiler.ClosureUtil.isMatch(ClosureUtil.java:182)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.inferTypesForClosure(MethodCallExpressionTransformer.java:797)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.foundMethodInference(MethodCallExpressionTransformer.java:729)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.findMethodVariatingArgs(MethodCallExpressionTransformer.java:617)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.findMethodWithClosureCoercion(MethodCallExpressionTransformer.java:832)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.createNormalMethodCall(MethodCallExpressionTransformer.java:113)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.transform(MethodCallExpressionTransformer.java:92)
at
org.mbte.groovypp.compiler.transformers.MethodCallExpressionTransformer.transform(MethodCallExpressionTransformer.java:36)
at
org.mbte.groovypp.compiler.transformers.ExprTransformer.transformExpression(ExprTransformer.groovy:103)
at
org.mbte.groovypp.compiler.CompilerTransformer.transform(CompilerTransformer.java:114)
at
org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:139)
at
org.mbte.groovypp.compiler.StaticCompiler.visitExpressionStatement(StaticCompiler.java:387)
at
org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40)
at
org.mbte.groovypp.compiler.StaticCompiler.visitBlockStatement(StaticCompiler.java:357)
at
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at
org.mbte.groovypp.compiler.StaticCompiler.visitBlockStatement(StaticCompiler.java:357)
at
org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69)
at
org.mbte.groovypp.compiler.StaticCompiler.execute(StaticCompiler.java:1212)
at
org.mbte.groovypp.compiler.StaticMethodBytecode.<init>(StaticMethodBytecode.java:73)
at
org.mbte.groovypp.compiler.StaticMethodBytecode.replaceMethodCode(StaticMethodBytecode.java:106)
at
org.mbte.groovypp.compiler.CompileASTTransform.visit(CompileASTTransform.java:125)
at
org.codehaus.groovy.transform.ASTTransformationVisitor.visitClass(ASTTransformationVisitor.java:129)
at
org.codehaus.groovy.transform.ASTTransformationVisitor$2.call(ASTTransformationVisitor.java:172)
at
org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:957)
at
org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:542)
at
org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:520)
at
org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:497)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:731)
at groovy.lang.GroovyShell.run(GroovyShell.java:516)
at groovy.lang.GroovyShell.run(GroovyShell.java:172)
at groovy.lang.GroovyShell$run.call(Unknown Source)
at groovy.ui.Console$_runScriptImpl_closure16.doCall(Console.groovy:910)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:885)
at
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66)
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:141)
at groovy.ui.Console$_runScriptImpl_closure16.doCall(Console.groovy)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
at
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:885)
at groovy.lang.Closure.call(Closure.java:405)
at groovy.lang.Closure.call(Closure.java:399)
at groovy.lang.Closure.run(Closure.java:483)
at java.lang.Thread.run(Thread.java:662)
1 compilation error:


I use the last groovypp-0.4.279_1.8.0 on windows

groovy...@googlecode.com

unread,
Jul 15, 2011, 12:57:27 AM7/15/11
to groovyp...@googlegroups.com
Updates:
Status: Accepted

Comment #1 on issue 389 by alex.tka...@gmail.com: increment counter in Map:
compilation error
http://code.google.com/p/groovypptest/issues/detail?id=389

(No comment was entered for this change.)

groovy...@googlecode.com

unread,
Jul 15, 2011, 2:49:30 AM7/15/11
to groovyp...@googlegroups.com
Updates:
Status: Fixed

Comment #2 on issue 389 by alex.tka...@gmail.com: increment counter in Map:

Reply all
Reply to author
Forward
0 new messages