From 44340ae0d82c2e12a6f617f0a08910e9cd600ec5 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Wed, 27 Nov 2024 11:55:12 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20Resign=20ast=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../buddy/ts2java/ast/BaseTs2JavaAst.java | 20 ++++++++-- .../ast/BaseTs2JavaAstWithBuilderStore.java | 38 ------------------- .../ts2java/ast/clazz/Ts2JavaAstClass.java | 17 +++++---- .../ast/clazz/Ts2JavaAstClassMethod.java | 15 ++++---- .../ts2java/ast/clazz/Ts2JavaAstFunction.java | 21 +++++++--- .../ts2java/ast/interfaces/ITs2JavaAst.java | 5 ++- .../ITs2JavaAstBlockStmtOrExpr.java | 5 ++- .../interfaces/ITs2JavaAstClassMember.java | 5 ++- .../ast/interfaces/ITs2JavaAstDecl.java | 5 ++- .../ast/interfaces/ITs2JavaAstModuleItem.java | 5 ++- .../ast/interfaces/ITs2JavaAstStmt.java | 5 ++- .../Ts2JavaMemo.java} | 7 +--- .../Ts2JavaMemoDynamicType.java} | 10 ++--- .../ts2java/ast/memo/Ts2JavaMemoFunction.java | 20 ++++++++++ .../ts2java/ast/stmt/Ts2JavaAstBlockStmt.java | 15 +++++--- .../ts2java/ast/stmt/Ts2JavaAstClassDecl.java | 18 +++++---- .../ast/stmt/Ts2JavaAstReturnStmt.java | 13 +++---- 17 files changed, 120 insertions(+), 104 deletions(-) delete mode 100644 src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAstWithBuilderStore.java rename src/main/java/com/caoccao/javet/buddy/ts2java/ast/{interfaces/ITs2JavaBuilderStore.java => memo/Ts2JavaMemo.java} (73%) rename src/main/java/com/caoccao/javet/buddy/ts2java/ast/{Ts2JavaDynamicTypeBuilderStore.java => memo/Ts2JavaMemoDynamicType.java} (76%) create mode 100644 src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoFunction.java diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAst.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAst.java index 7d79568..b515dce 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAst.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAst.java @@ -17,20 +17,34 @@ package com.caoccao.javet.buddy.ts2java.ast; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemo; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAst; import java.util.Objects; -public abstract class BaseTs2JavaAst - implements ITs2JavaAst { +public abstract class BaseTs2JavaAst + implements ITs2JavaAst { protected AST ast; + protected Memo memo; + protected ITs2JavaAst parent; - public BaseTs2JavaAst(AST ast) { + public BaseTs2JavaAst(ITs2JavaAst parent, AST ast, Memo memo) { this.ast = Objects.requireNonNull(ast); + this.memo = Objects.requireNonNull(memo); + this.parent = parent; } @Override public AST getAst() { return ast; } + + @Override + public Memo getMemo() { + return memo; + } + + public ITs2JavaAst getParent() { + return parent; + } } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAstWithBuilderStore.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAstWithBuilderStore.java deleted file mode 100644 index aba3da7..0000000 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/BaseTs2JavaAstWithBuilderStore.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2024. caoccao.com Sam Cao - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.caoccao.javet.buddy.ts2java.ast; - -import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaBuilderStore; -import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAst; - -import java.util.Objects; - -public abstract class BaseTs2JavaAstWithBuilderStore - extends BaseTs2JavaAst - implements ITs2JavaBuilderStore { - protected final Ts2JavaDynamicTypeBuilderStore builderStore; - - public BaseTs2JavaAstWithBuilderStore(Ts2JavaDynamicTypeBuilderStore builderStore, AST ast) { - super(ast); - this.builderStore = Objects.requireNonNull(builderStore); - } - - @Override - public Ts2JavaDynamicTypeBuilderStore getBuilderStore() { - return builderStore; - } -} diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClass.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClass.java index 06fca16..9fda870 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClass.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClass.java @@ -16,9 +16,10 @@ package com.caoccao.javet.buddy.ts2java.ast.clazz; -import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAstWithBuilderStore; -import com.caoccao.javet.buddy.ts2java.ast.Ts2JavaDynamicTypeBuilderStore; +import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstClassMember; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; import com.caoccao.javet.buddy.ts2java.exceptions.Ts2JavaAstException; import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstClass; import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstClassMethod; @@ -30,16 +31,16 @@ import java.util.List; public class Ts2JavaAstClass - extends BaseTs2JavaAstWithBuilderStore { - protected final List> body; + extends BaseTs2JavaAst { + protected final List> body; - public Ts2JavaAstClass(Ts2JavaDynamicTypeBuilderStore builderStore, Swc4jAstClass ast) { - super(builderStore, ast); + public Ts2JavaAstClass(ITs2JavaAst parent, Swc4jAstClass ast, Ts2JavaMemoDynamicType memo) { + super(parent, ast, memo); body = new ArrayList<>(); for (ISwc4jAstClassMember classMember : ast.getBody()) { switch (classMember.getType()) { case ClassMethod: - body.add(new Ts2JavaAstClassMethod(builderStore, classMember.as(Swc4jAstClassMethod.class))); + body.add(new Ts2JavaAstClassMethod(this, classMember.as(Swc4jAstClassMethod.class), memo)); break; default: throw new Ts2JavaAstException( @@ -55,7 +56,7 @@ public void compile() { body.forEach(ITs2JavaAstClassMember::compile); } - public List> getBody() { + public List> getBody() { return body; } } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClassMethod.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClassMethod.java index 2e7694b..ab4cd2b 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClassMethod.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstClassMethod.java @@ -16,9 +16,10 @@ package com.caoccao.javet.buddy.ts2java.ast.clazz; -import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAstWithBuilderStore; -import com.caoccao.javet.buddy.ts2java.ast.Ts2JavaDynamicTypeBuilderStore; +import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstClassMember; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; import com.caoccao.javet.buddy.ts2java.exceptions.Ts2JavaAstException; import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstClassMethod; import com.caoccao.javet.swc4j.ast.enums.Swc4jAstAccessibility; @@ -28,12 +29,12 @@ import com.caoccao.javet.utils.SimpleMap; public class Ts2JavaAstClassMethod - extends BaseTs2JavaAstWithBuilderStore - implements ITs2JavaAstClassMember { + extends BaseTs2JavaAst + implements ITs2JavaAstClassMember { protected final Ts2JavaAstFunction function; - public Ts2JavaAstClassMethod(Ts2JavaDynamicTypeBuilderStore builderStore, Swc4jAstClassMethod ast) { - super(builderStore, ast); + public Ts2JavaAstClassMethod(ITs2JavaAst parent, Swc4jAstClassMethod ast, Ts2JavaMemoDynamicType memo) { + super(parent, ast, memo); if (ast.isStatic()) { throw new Ts2JavaAstException( ast, @@ -55,7 +56,7 @@ public Ts2JavaAstClassMethod(Ts2JavaDynamicTypeBuilderStore builderStore, Swc4jA String name = ast.getKey().as(Swc4jAstIdentName.class).getSym(); boolean _static = ast.isStatic(); Swc4jAstAccessibility accessibility = ast.getAccessibility().orElse(Swc4jAstAccessibility.Public); - function = new Ts2JavaAstFunction(builderStore, ast.getFunction(), name, _static, accessibility); + function = new Ts2JavaAstFunction(this, ast.getFunction(), memo, name, _static, accessibility); } @Override diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstFunction.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstFunction.java index 0b02445..0fc37a8 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstFunction.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/clazz/Ts2JavaAstFunction.java @@ -16,8 +16,10 @@ package com.caoccao.javet.buddy.ts2java.ast.clazz; -import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAstWithBuilderStore; -import com.caoccao.javet.buddy.ts2java.ast.Ts2JavaDynamicTypeBuilderStore; +import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoFunction; import com.caoccao.javet.buddy.ts2java.ast.stmt.Ts2JavaAstBlockStmt; import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstFunction; import com.caoccao.javet.swc4j.ast.enums.Swc4jAstAccessibility; @@ -25,23 +27,26 @@ import java.util.Optional; public class Ts2JavaAstFunction - extends BaseTs2JavaAstWithBuilderStore { + extends BaseTs2JavaAst { protected final boolean _static; protected final Swc4jAstAccessibility accessibility; protected final Optional body; + protected final Ts2JavaMemoFunction memoFunction; protected final String name; public Ts2JavaAstFunction( - Ts2JavaDynamicTypeBuilderStore builderStore, + ITs2JavaAst parent, Swc4jAstFunction ast, + Ts2JavaMemoDynamicType memo, String name, boolean _static, Swc4jAstAccessibility accessibility) { - super(builderStore, ast); + super(parent, ast, memo); this._static = _static; this.accessibility = accessibility; + memoFunction = new Ts2JavaMemoFunction(); this.name = name; - body = ast.getBody().map(Ts2JavaAstBlockStmt::new); + body = ast.getBody().map(stmt -> new Ts2JavaAstBlockStmt(this, stmt, memoFunction)); } @Override @@ -57,6 +62,10 @@ public Optional getBody() { return body; } + public Ts2JavaMemoFunction getMemoFunction() { + return memoFunction; + } + public String getName() { return name; } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAst.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAst.java index 4da38ce..6a69a69 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAst.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAst.java @@ -16,6 +16,7 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemo; import com.caoccao.javet.buddy.ts2java.exceptions.Ts2JavaException; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAst; import com.caoccao.javet.utils.SimpleFreeMarkerFormat; @@ -24,7 +25,7 @@ import net.bytebuddy.implementation.bytecode.StackManipulation; import net.bytebuddy.jar.asm.MethodVisitor; -public interface ITs2JavaAst +public interface ITs2JavaAst extends StackManipulation { @Override default Size apply(MethodVisitor methodVisitor, Implementation.Context context) { @@ -37,6 +38,8 @@ default Size apply(MethodVisitor methodVisitor, Implementation.Context context) AST getAst(); + Memo getMemo(); + @Override default boolean isValid() { return true; diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstBlockStmtOrExpr.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstBlockStmtOrExpr.java index 8745fee..2f71392 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstBlockStmtOrExpr.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstBlockStmtOrExpr.java @@ -16,8 +16,9 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemo; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstBlockStmtOrExpr; -public interface ITs2JavaAstBlockStmtOrExpr - extends ITs2JavaAst { +public interface ITs2JavaAstBlockStmtOrExpr + extends ITs2JavaAst { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstClassMember.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstClassMember.java index 66c7c79..3c2207f 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstClassMember.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstClassMember.java @@ -16,9 +16,10 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstClassMember; -public interface ITs2JavaAstClassMember - extends ITs2JavaAst { +public interface ITs2JavaAstClassMember + extends ITs2JavaAst { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstDecl.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstDecl.java index 06fbd30..f43af5a 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstDecl.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstDecl.java @@ -16,9 +16,10 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstDecl; -public interface ITs2JavaAstDecl - extends ITs2JavaAstStmt { +public interface ITs2JavaAstDecl + extends ITs2JavaAstStmt { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstModuleItem.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstModuleItem.java index d8a4534..4babe57 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstModuleItem.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstModuleItem.java @@ -16,8 +16,9 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemo; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstModuleItem; -public interface ITs2JavaAstModuleItem - extends ITs2JavaAst { +public interface ITs2JavaAstModuleItem + extends ITs2JavaAst { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstStmt.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstStmt.java index 8caae98..ef18a74 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstStmt.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaAstStmt.java @@ -16,8 +16,9 @@ package com.caoccao.javet.buddy.ts2java.ast.interfaces; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemo; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstStmt; -public interface ITs2JavaAstStmt - extends ITs2JavaAstModuleItem { +public interface ITs2JavaAstStmt + extends ITs2JavaAstModuleItem { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaBuilderStore.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemo.java similarity index 73% rename from src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaBuilderStore.java rename to src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemo.java index d4052d1..59f35c1 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/interfaces/ITs2JavaBuilderStore.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemo.java @@ -14,10 +14,7 @@ * limitations under the License. */ -package com.caoccao.javet.buddy.ts2java.ast.interfaces; +package com.caoccao.javet.buddy.ts2java.ast.memo; -import com.caoccao.javet.buddy.ts2java.ast.Ts2JavaDynamicTypeBuilderStore; - -public interface ITs2JavaBuilderStore { - Ts2JavaDynamicTypeBuilderStore getBuilderStore(); +public abstract class Ts2JavaMemo { } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/Ts2JavaDynamicTypeBuilderStore.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoDynamicType.java similarity index 76% rename from src/main/java/com/caoccao/javet/buddy/ts2java/ast/Ts2JavaDynamicTypeBuilderStore.java rename to src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoDynamicType.java index 7b1b338..6885243 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/Ts2JavaDynamicTypeBuilderStore.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoDynamicType.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2024. caoccao.com Sam Cao + * Copyright (c) 2024-2024. caoccao.com Sam Cao * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,16 +14,16 @@ * limitations under the License. */ -package com.caoccao.javet.buddy.ts2java.ast; +package com.caoccao.javet.buddy.ts2java.ast.memo; import net.bytebuddy.dynamic.DynamicType; import java.util.Objects; -public final class Ts2JavaDynamicTypeBuilderStore { - private DynamicType.Builder builder; +public class Ts2JavaMemoDynamicType extends Ts2JavaMemo { + protected DynamicType.Builder builder; - public Ts2JavaDynamicTypeBuilderStore(DynamicType.Builder builder) { + public Ts2JavaMemoDynamicType(DynamicType.Builder builder) { setBuilder(builder); } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoFunction.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoFunction.java new file mode 100644 index 0000000..1f99ee1 --- /dev/null +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/memo/Ts2JavaMemoFunction.java @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2024-2024. caoccao.com Sam Cao + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.caoccao.javet.buddy.ts2java.ast.memo; + +public class Ts2JavaMemoFunction extends Ts2JavaMemo { +} diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstBlockStmt.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstBlockStmt.java index 96e8998..d9ac2e1 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstBlockStmt.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstBlockStmt.java @@ -17,8 +17,10 @@ package com.caoccao.javet.buddy.ts2java.ast.stmt; import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstBlockStmtOrExpr; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstStmt; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoFunction; import com.caoccao.javet.buddy.ts2java.exceptions.Ts2JavaAstException; import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstStmt; import com.caoccao.javet.swc4j.ast.stmt.Swc4jAstBlockStmt; @@ -30,12 +32,13 @@ import java.util.List; public class Ts2JavaAstBlockStmt - extends BaseTs2JavaAst - implements ITs2JavaAstStmt, ITs2JavaAstBlockStmtOrExpr { - protected final List> stmts; + extends BaseTs2JavaAst + implements ITs2JavaAstStmt, + ITs2JavaAstBlockStmtOrExpr { + protected final List> stmts; - public Ts2JavaAstBlockStmt(Swc4jAstBlockStmt ast) { - super(ast); + public Ts2JavaAstBlockStmt(ITs2JavaAst parent, Swc4jAstBlockStmt ast, Ts2JavaMemoFunction memo) { + super(parent, ast, memo); stmts = new ArrayList<>(); for (ISwc4jAstStmt stmt : ast.getStmts()) { switch (stmt.getType()) { @@ -43,7 +46,7 @@ public Ts2JavaAstBlockStmt(Swc4jAstBlockStmt ast) { // TODO break; case ReturnStmt: - stmts.add(new Ts2JavaAstReturnStmt(stmt.as(Swc4jAstReturnStmt.class))); + stmts.add(new Ts2JavaAstReturnStmt(this, stmt.as(Swc4jAstReturnStmt.class), memo)); break; default: throw new Ts2JavaAstException( diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstClassDecl.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstClassDecl.java index 207718a..a24ce59 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstClassDecl.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstClassDecl.java @@ -16,25 +16,27 @@ package com.caoccao.javet.buddy.ts2java.ast.stmt; -import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAstWithBuilderStore; -import com.caoccao.javet.buddy.ts2java.ast.Ts2JavaDynamicTypeBuilderStore; +import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.clazz.Ts2JavaAstClass; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstDecl; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoDynamicType; import com.caoccao.javet.swc4j.ast.stmt.Swc4jAstClassDecl; import com.caoccao.javet.utils.StringUtils; public class Ts2JavaAstClassDecl - extends BaseTs2JavaAstWithBuilderStore - implements ITs2JavaAstDecl { + extends BaseTs2JavaAst + implements ITs2JavaAstDecl { protected final Ts2JavaAstClass clazz; protected final String packageName; public Ts2JavaAstClassDecl( - Ts2JavaDynamicTypeBuilderStore builderStore, + ITs2JavaAst parent, Swc4jAstClassDecl ast, + Ts2JavaMemoDynamicType memo, String packageName) { - super(builderStore, ast); - clazz = new Ts2JavaAstClass(builderStore, ast.getClazz()); + super(parent, ast, memo); + clazz = new Ts2JavaAstClass(this, ast.getClazz(), memo); this.packageName = packageName; } @@ -43,7 +45,7 @@ public void compile() { String className = StringUtils.isEmpty(packageName) ? ast.getIdent().getSym() : packageName + "." + ast.getIdent().getSym(); - builderStore.setBuilder(builderStore.getBuilder().name(className)); + memo.setBuilder(memo.getBuilder().name(className)); clazz.compile(); } diff --git a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstReturnStmt.java b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstReturnStmt.java index 2206eb0..2fe8974 100644 --- a/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstReturnStmt.java +++ b/src/main/java/com/caoccao/javet/buddy/ts2java/ast/stmt/Ts2JavaAstReturnStmt.java @@ -17,19 +17,18 @@ package com.caoccao.javet.buddy.ts2java.ast.stmt; import com.caoccao.javet.buddy.ts2java.ast.BaseTs2JavaAst; +import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAst; import com.caoccao.javet.buddy.ts2java.ast.interfaces.ITs2JavaAstStmt; -import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstExpr; +import com.caoccao.javet.buddy.ts2java.ast.memo.Ts2JavaMemoFunction; import com.caoccao.javet.swc4j.ast.stmt.Swc4jAstReturnStmt; -import java.util.Optional; - public class Ts2JavaAstReturnStmt - extends BaseTs2JavaAst - implements ITs2JavaAstStmt { + extends BaseTs2JavaAst + implements ITs2JavaAstStmt { // TODO - public Ts2JavaAstReturnStmt(Swc4jAstReturnStmt ast) { - super(ast); + public Ts2JavaAstReturnStmt(ITs2JavaAst parent, Swc4jAstReturnStmt ast, Ts2JavaMemoFunction memo) { + super(parent, ast, memo); } @Override