From dad862df099cfed758c4eb4627f30e5c680c37e3 Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Mon, 20 May 2024 09:28:50 +0200 Subject: [PATCH] Fixed inner class bug. --- .../groovy/sketching/SimpleGreeter.wvc | 2 +- .../transpile/DefaultGroovyTranspiler.java | 32 ++----------------- web-views/todo.md | 4 ++- 3 files changed, 6 insertions(+), 32 deletions(-) diff --git a/web-views/sketching/groovy/sketching/SimpleGreeter.wvc b/web-views/sketching/groovy/sketching/SimpleGreeter.wvc index 3b126a6..ee2ee55 100644 --- a/web-views/sketching/groovy/sketching/SimpleGreeter.wvc +++ b/web-views/sketching/groovy/sketching/SimpleGreeter.wvc @@ -3,7 +3,7 @@ package sketching import groowt.view.web.BaseWebViewComponent -static class Greeter extends BaseWebViewComponent { +class Greeter extends BaseWebViewComponent { String target Greeter(Map attr) { diff --git a/web-views/src/main/java/groowt/view/web/transpile/DefaultGroovyTranspiler.java b/web-views/src/main/java/groowt/view/web/transpile/DefaultGroovyTranspiler.java index b23dc85..42d455b 100644 --- a/web-views/src/main/java/groowt/view/web/transpile/DefaultGroovyTranspiler.java +++ b/web-views/src/main/java/groowt/view/web/transpile/DefaultGroovyTranspiler.java @@ -25,7 +25,6 @@ import org.codehaus.groovy.control.SourceUnit; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; import java.util.List; import static groowt.view.web.transpile.TranspilerUtil.*; @@ -69,30 +68,6 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { } } - protected List convertPreambleClassesToInnerClasses( - ClassNode mainClassNode, - List classNodes - ) { - final List result = new ArrayList<>(); - for (final var classNode : classNodes) { - if (classNode instanceof InnerClassNode innerClassNode) { - result.add(innerClassNode); - } else { - final InnerClassNode icn = new InnerClassNode( - mainClassNode, - mainClassNode.getName() + "." + classNode.getNameWithoutPackage(), - classNode.getModifiers(), - classNode.getSuperClass(), - classNode.getInterfaces(), - classNode.getMixins() - ); - icn.setDeclaringClass(mainClassNode); - result.add(icn); - } - } - return result; - } - protected void handlePreamble( String templateClassName, PreambleNode preambleNode, @@ -147,12 +122,9 @@ public class DefaultGroovyTranspiler implements GroovyTranspiler { // handle classes final List classNodes = convertResult.classNodes(); this.checkPreambleClasses(templateClassName, classNodes); - final List toInner = classNodes.stream() + classNodes.stream() .filter(classNode -> classNode != convertResult.scriptClass()) - .filter(classNode -> !classNode.isScript()) - .toList(); - final List innerClassNodes = this.convertPreambleClassesToInnerClasses(mainClassNode, toInner); - innerClassNodes.forEach(moduleNode::addClass); + .forEach(moduleNode::addClass); } // Cases: diff --git a/web-views/todo.md b/web-views/todo.md index eaa8938..ef05cd1 100644 --- a/web-views/todo.md +++ b/web-views/todo.md @@ -18,9 +18,11 @@ - [ ] Create smoke screen test cases for the compiler. - [ ] Separate the api, runtime, and compiler elements. The api/runtime can depend on the compiler. If users really want to meddle with the compiler for some reason, they can depend on it directly. -- [ ] Fix inner class bug. ### Done +- [X] Fix inner class bug. + - Update 5/20/24: Seems to be working now. N.b.: they are not truly 'inner' classes but rather classes that are added + to the same module. We should always prefer to err on the side of what the usual groovy script semantics are. - [X] Get rid of sketching source set. - Update 5/20/24: Done, but moved to `sketching/(java | groovy)/sketching` src set dirs. - [X] Think more about how to compile templates and components alongside each other. Perhaps we just need to bite