[jira] [Created] (GROOVY-9611) Reflexive access to class attributes broken in Groovy 3
Gildas Morvan created GROOVY-9611: - Summary: Reflexive access to class attributes broken in Groovy 3 Key: GROOVY-9611 URL: https://issues.apache.org/jira/browse/GROOVY-9611 Project: Groovy Issue Type: Bug Affects Versions: 3.0.4 Environment: macOs Catalina, openjdk 13.0.2 2020-01-14, Groovy 3.0.4 Reporter: Gildas Morvan Since Groovy 3, the reflexive access to Groovy class attributes from Java is broken. The [following code|[https://github.com/gildasmorvan/similar2logo/blob/master/similar2logo-examples/src/main/groovy/fr/univ_artois/lgi2a/similar2logo/examples/boids/GroovyBoidsSimulation.groovy]] which works fine with groovy 2.5.* raises this exception: {{}} {code:java} juin 30, 2020 9:01:33 AM fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator renderParameter WARNING: The parameter public double fr.univ_artois.lgi2a.similar2logo.examples.boids.GroovyBoidsSimulation$1.minInitialSpeed cannot be found java.lang.IllegalAccessException: class fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator cannot access a member of class fr.univ_artois.lgi2a.similar2logo.examples.boids.GroovyBoidsSimulation$1 with modifiers "public" at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:376) at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:642) at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075) at java.base/java.lang.reflect.Field.get(Field.java:416) at fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderParameter(SimilarHtmlGenerator.java:290) at fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.lambda$renderParameters$4(SimilarHtmlGenerator.java:243) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) at j2html.tags.ContainerTag.with(ContainerTag.java:100) at j2html.TagCreator.each(TagCreator.java:108) at fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderParameters(SimilarHtmlGenerator.java:243) at fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderView(SimilarHtmlGenerator.java:166) at fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHttpServer.lambda$initServer$0(SimilarHttpServer.java:112) at spark.RouteImpl$1.handle(RouteImpl.java:72) at spark.http.matching.Routes.execute(Routes.java:61) at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:505) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698) at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804) at java.base/java.lang.Thread.run(Thread.java:830) {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Created] (GROOVY-9612) Should parse parenthesis and bracket after newline correctly
Laurent RICHARD de LAPRADE created GROOVY-9612: -- Summary: Should parse parenthesis and bracket after newline correctly Key: GROOVY-9612 URL: https://issues.apache.org/jira/browse/GROOVY-9612 Project: Groovy Issue Type: Wish Components: parser Affects Versions: 3.0.4 Reporter: Laurent RICHARD de LAPRADE For example, this should compile correctly. Current groovy parser forces coding style format which is not the one we choose when we code Java. {code:java} import java.io.*; import groovy.io.*; def dir = new File("C:\\"); dir.eachFileRecurse ( f -> println(f.name) ); {code} groovy.lang.MissingPropertyException: No such property: eachFileRecurse for class: java.io.File -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GROOVY-9612) Should parse parenthesis and bracket after newline correctly
[ https://issues.apache.org/jira/browse/GROOVY-9612?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17149094#comment-17149094 ] Daniel Sun commented on GROOVY-9612: Groovy does not support such a syntax since 2.4. If we support it, more ambiguities will be introduced because parenthesis expressions can exist standalone. {code:java} println GroovySystem.version println ( 123 ) {code} You can try the above code via [https://groovy-playground.appspot.com/] > Should parse parenthesis and bracket after newline correctly > > > Key: GROOVY-9612 > URL: https://issues.apache.org/jira/browse/GROOVY-9612 > Project: Groovy > Issue Type: Wish > Components: parser >Affects Versions: 3.0.4 >Reporter: Laurent RICHARD de LAPRADE >Priority: Major > > For example, this should compile correctly. Current groovy parser forces > coding style format which is not the one we choose when we code Java. > {code:java} > import java.io.*; > import groovy.io.*; > def dir = new File("C:\\"); > dir.eachFileRecurse > ( > f > -> > println(f.name) > ); > {code} > groovy.lang.MissingPropertyException: No such property: eachFileRecurse for > class: java.io.File > -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Commented] (GROOVY-9611) Reflexive access to class attributes broken in Groovy 3
[ https://issues.apache.org/jira/browse/GROOVY-9611?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17149097#comment-17149097 ] Daniel Sun commented on GROOVY-9611: We wish you could provide a simple runnable script to reproduce the issue. > Reflexive access to class attributes broken in Groovy 3 > --- > > Key: GROOVY-9611 > URL: https://issues.apache.org/jira/browse/GROOVY-9611 > Project: Groovy > Issue Type: Bug >Affects Versions: 3.0.4 > Environment: macOs Catalina, openjdk 13.0.2 2020-01-14, Groovy 3.0.4 >Reporter: Gildas Morvan >Priority: Major > > Since Groovy 3, the reflexive access to Groovy class attributes from Java is > broken. > > The [following > code|[https://github.com/gildasmorvan/similar2logo/blob/master/similar2logo-examples/src/main/groovy/fr/univ_artois/lgi2a/similar2logo/examples/boids/GroovyBoidsSimulation.groovy]] > which works fine with groovy 2.5.* raises this exception: > > {{}} > > {code:java} > juin 30, 2020 9:01:33 AM > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator > renderParameter > WARNING: The parameter public double > fr.univ_artois.lgi2a.similar2logo.examples.boids.GroovyBoidsSimulation$1.minInitialSpeed > cannot be found > java.lang.IllegalAccessException: class > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator > cannot access a member of class > fr.univ_artois.lgi2a.similar2logo.examples.boids.GroovyBoidsSimulation$1 with > modifiers "public" > at > java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:376) > at > java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:642) > at java.base/java.lang.reflect.Field.checkAccess(Field.java:1075) > at java.base/java.lang.reflect.Field.get(Field.java:416) > at > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderParameter(SimilarHtmlGenerator.java:290) > at > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.lambda$renderParameters$4(SimilarHtmlGenerator.java:243) > at > java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) > at > java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948) > at > java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) > at > java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) > at > java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150) > at > java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173) > at > java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) > at > java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497) > at j2html.tags.ContainerTag.with(ContainerTag.java:100) > at j2html.TagCreator.each(TagCreator.java:108) > at > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderParameters(SimilarHtmlGenerator.java:243) > at > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHtmlGenerator.renderView(SimilarHtmlGenerator.java:166) > at > fr.univ_artois.lgi2a.similar.extendedkernel.libs.web.view.SimilarHttpServer.lambda$initServer$0(SimilarHttpServer.java:112) > at spark.RouteImpl$1.handle(RouteImpl.java:72) > at spark.http.matching.Routes.execute(Routes.java:61) > at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) > at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671) > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) > at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:61) > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at org.eclipse.jetty.server.Server.handle(Server.java:505) > at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) > at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698) > at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804) > at java.base/java.lang.Thread.run(Thread.java:830) > {code} > > -- This message was sent by Atlassian Jira (v8.3.4#803005)