From notifications-return-14624-archive-asf-public=cust-asf.ponee.io@groovy.apache.org Sun Nov 18 11:15:05 2018 Return-Path: X-Original-To: archive-asf-public@cust-asf.ponee.io Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx-eu-01.ponee.io (Postfix) with SMTP id 5753318066C for ; Sun, 18 Nov 2018 11:15:04 +0100 (CET) Received: (qmail 2602 invoked by uid 500); 18 Nov 2018 10:15:03 -0000 Mailing-List: contact notifications-help@groovy.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@groovy.apache.org Delivered-To: mailing list notifications@groovy.apache.org Received: (qmail 2593 invoked by uid 99); 18 Nov 2018 10:15:03 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd3-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 18 Nov 2018 10:15:03 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd3-us-west.apache.org (ASF Mail Server at spamd3-us-west.apache.org) with ESMTP id 0FCB2180C68 for ; Sun, 18 Nov 2018 10:15:03 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd3-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -110.301 X-Spam-Level: X-Spam-Status: No, score=-110.301 tagged_above=-999 required=6.31 tests=[ENV_AND_HDR_SPF_MATCH=-0.5, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, USER_IN_DEF_SPF_WL=-7.5, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd3-us-west.apache.org [10.40.0.10]) (amavisd-new, port 10024) with ESMTP id 6i6EUg17hNPm for ; Sun, 18 Nov 2018 10:15:01 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id 004655F47C for ; Sun, 18 Nov 2018 10:15:01 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 70C4DE0A31 for ; Sun, 18 Nov 2018 10:15:00 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 2EE6F21361 for ; Sun, 18 Nov 2018 10:15:00 +0000 (UTC) Date: Sun, 18 Nov 2018 10:15:00 +0000 (UTC) From: "Anton Pryamostanov (JIRA)" To: notifications@groovy.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (GROOVY-8880) Traits - static/instance init blocks MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/GROOVY-8880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16690856#comment-16690856 ] Anton Pryamostanov commented on GROOVY-8880: -------------------------------------------- hi [~paulk], yes - using "Clean" Maven task. Tried many times yesterday; works like charm in 2.5.5.SNAPSHOT but did not work in 3.0.0. Also I validated that commit changes were in the project files used in my build. There were some other issues with the build yesterday (related to Asciidoc plug) and they are resolved now. I will try again and will investigate more on what was happenning and post update here by today evening. Now going away from city. > Traits - static/instance init blocks > ------------------------------------ > > Key: GROOVY-8880 > URL: https://issues.apache.org/jira/browse/GROOVY-8880 > Project: Groovy > Issue Type: Improvement > Components: Compiler, groovy-runtime > Affects Versions: 2.5.2 > Reporter: Anton Pryamostanov > Assignee: Paul King > Priority: Major > Fix For: 3.0.0-alpha-4, 2.5.5 > > > Let's consider the below examples of Traits with Init blocks: > *Instance init block:* > {code} > trait InstanceTrait { > { > System.out.println("Instance init") > } > } > class InstanceTraitClass implements InstanceTrait { > } > new InstanceTraitClass() > {code} > This gives the below compilation exception: > {code:java} > General error during class generation: NPE while processing script1542098577743.groovy > groovy.lang.GroovyRuntimeException: NPE while processing script1542098577743.groovy > at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:2 > at org.codehaus.groovy.control.CompilationUnit$17.call(CompilationUnit.java:8 > at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:10 > at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:6 > at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:5 > at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:5 > at org.codehaus.groovy.control.CompilationUnit$compile$1.call(Unknown Sour > at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java: > at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:1 > at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:1 > at groovy.inspect.swingui.AstNodeToScriptAdapter.compileToScript(AstNodeToScriptAdapter.groovy: > at groovy.inspect.swingui.AstNodeToScriptAdapter$compileToScript.call(Unknown Sour > at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java: > at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:1 > at groovy.inspect.swingui.AstBrowser$_decompile_closure6.doCall(AstBrowser.groovy:3 > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Meth > at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: > at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: > at java.lang.reflect.Method.invoke(Method.java:4 > at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java: > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:3 > at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:2 > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:10 > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:10 > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:10 > at groovy.lang.Closure.call(Closure.java:4 > at groovy.lang.Closure.call(Closure.java:4 > at groovy.lang.Closure.run(Closure.java:4 > at java.lang.Thread.run(Thread.java:7 > Caused by: java.lang.NullPointerException > at org.codehaus.groovy.classgen.asm.CallSiteWriter.prepareCallSite(CallSiteWriter.java:2 > at org.codehaus.groovy.classgen.asm.CallSiteWriter.prepareSiteAndReceiver(CallSiteWriter.java:2 > at org.codehaus.groovy.classgen.asm.CallSiteWriter.prepareSiteAndReceiver(CallSiteWriter.java:2 > at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:2 > at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCachedCall(InvocationWriter.java:3 > at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:3 > at org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:1 > at org.codehaus.groovy.classgen.asm.InvocationWriter.makeInvokeMethodCall(InvocationWriter.java: > at org.codehaus.groovy.classgen.asm.InvocationWriter.writeInvokeMethod(InvocationWriter.java:4 > at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethodCallExpression(AsmClassGenerator.java:7 > at org.codehaus.groovy.ast.expr.MethodCallExpression.visit(MethodCallExpression.java: > at org.codehaus.groovy.classgen.asm.StatementWriter.writeExpressionStatement(StatementWriter.java:6 > at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeExpressionStatement(OptimizingStatementWriter.java:3 > at org.codehaus.groovy.classgen.AsmClassGenerator.visitExpressionStatement(AsmClassGenerator.java:6 > at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java: > at org.ehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:85) > at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:1 > at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:5 > at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java: > at org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java: > at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:1 > at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:5 > at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java: > at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitObjectInitializerStatements(ClassCodeVisitorSupport.java: > at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java: > at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:2 > ... 28 m > {code} > *Static init block:* > {code} > trait StaticTrait { > static { > System.out.println("Static init") > } > } > class StaticTraitClass implements StaticTrait { > } > new StaticTraitClass() > {code} > This compiles but gives below runtime exception: > {code:java} > java.lang.ExceptionInInitializerError > at ConsoleScript278.run(ConsoleScript278:12) > Caused by: groovy.lang.MissingMethodException: No signature of method: static StaticTrait.() is applicable for argument types: (java.lang.Class) values: [class StaticTraitClass] > at StaticTrait$Trait$Helper.$static_methodMissing(ConsoleScript278) > at StaticTraitClass.(ConsoleScript278) > ... 1 more > {code} > *Expected enhancement*: > - If it is easy to implement - please add support for above init blocks into traits. > Use case: adding initialization traits to classes. > - If it is difficult to implement - please add user-friendly error message for both cases and take decision not to support init blocks in Groovy traits. -- This message was sent by Atlassian JIRA (v7.6.3#76005)