Ladies and gentlemen, I've just bumped into the problem shown below.
Whilst it is arguable whether the situation should be valid or not (myself, I strongly believe it should be valid and compiled without a glitch), even if invalid, it should not cause an uncaught exception, but simply report a syntax error, I believe? All the best, OC === 941 /tmp> >e.groovy class foo { void bar() { } void bax() { return bar() } } 942 /tmp> groovy e WARNING: Using incubator modules: jdk.incubator.httpclient org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during class generation: Cannot use return statement with an expression on a method that returns void . At [3:16] /private/tmp/e.groovy org.codehaus.groovy.syntax.RuntimeParserException: Cannot use return statement with an expression on a method that returns void . At [3:16] /private/tmp/e.groovy at org.codehaus.groovy.classgen.AsmClassGenerator.throwException(AsmClassGenerator.java:718) at org.codehaus.groovy.classgen.asm.StatementWriter.writeReturn(StatementWriter.java:602) at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeReturn(OptimizingStatementWriter.java:368) at org.codehaus.groovy.classgen.AsmClassGenerator.visitReturnStatement(AsmClassGenerator.java:686) at org.codehaus.groovy.ast.stmt.ReturnStatement.visit(ReturnStatement.java:49) at org.codehaus.groovy.classgen.asm.StatementWriter.writeBlockStatement(StatementWriter.java:93) at org.codehaus.groovy.classgen.asm.OptimizingStatementWriter.writeBlockStatement(OptimizingStatementWriter.java:210) at org.codehaus.groovy.classgen.AsmClassGenerator.visitBlockStatement(AsmClassGenerator.java:636) at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:71) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:110) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:121) at org.codehaus.groovy.classgen.AsmClassGenerator.visitStdMethod(AsmClassGenerator.java:496) at org.codehaus.groovy.classgen.AsmClassGenerator.visitConstructorOrMethod(AsmClassGenerator.java:432) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:132) at org.codehaus.groovy.classgen.AsmClassGenerator.visitMethod(AsmClassGenerator.java:577) at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1140) at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:54) at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:270) at org.codehaus.groovy.control.CompilationUnit$18.call(CompilationUnit.java:850) at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1087) at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:631) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:609) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:586) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:354) at groovy.lang.GroovyClassLoader.access$300(GroovyClassLoader.java:87) at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:323) at groovy.lang.GroovyClassLoader$5.provide(GroovyClassLoader.java:320) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:162) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:153) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:318) at groovy.lang.GroovyShell.parseClass(GroovyShell.java:547) at groovy.lang.GroovyShell.run(GroovyShell.java:376) at groovy.lang.GroovyShell.run(GroovyShell.java:366) at groovy.ui.GroovyMain.processOnce(GroovyMain.java:589) at groovy.ui.GroovyMain.run(GroovyMain.java:332) at groovy.ui.GroovyMain.access$1400(GroovyMain.java:69) at groovy.ui.GroovyMain$GroovyCommand.process(GroovyMain.java:291) at groovy.ui.GroovyMain.processArgs(GroovyMain.java:134) at groovy.ui.GroovyMain.main(GroovyMain.java:116) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:114) at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:136) 1 error 943 /tmp> groovy -version WARNING: Using incubator modules: jdk.incubator.httpclient Groovy Version: 3.0.0-alpha-3 JVM: 10.0.1 Vendor: "Oracle Corporation" OS: Mac OS X 944 /tmp> ===