Skip to content

Commit

Permalink
🦄 refactor: Change Ts2JavaException to RuntimeException
Browse files Browse the repository at this point in the history
  • Loading branch information
caoccao committed Oct 26, 2024
1 parent 1d53002 commit b0a6cd7
Show file tree
Hide file tree
Showing 15 changed files with 79 additions and 30 deletions.
2 changes: 2 additions & 0 deletions scripts/ts/test.add.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { type int } from "./type.aliases";

class Test {
public add(a: int, b: int): int {
return a + b;
Expand Down
2 changes: 2 additions & 0 deletions scripts/ts/test.sum.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { type int } from "./type.aliases";

function sum(n: int): int {
let sum: int = 0;
for (let i: int = 0; i < n; i++) {
Expand Down
2 changes: 1 addition & 1 deletion scripts/ts/type.aliases.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
type int = number;
export type int = number;
2 changes: 1 addition & 1 deletion src/main/java/com/caoccao/javet/buddy/ts2java/Ts2Java.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public String getTsCode() {
return tsCode;
}

public void transpile() throws Swc4jCoreException, Ts2JavaException {
public void transpile() throws Swc4jCoreException {
classes.clear();
Swc4jParseOutput output = swc4j.parse(getTsCode(), swc4jParseOptions);
Swc4jAstScript script = (Swc4jAstScript) output.getProgram();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

package com.caoccao.javet.buddy.ts2java;

public class Ts2JavaException extends Exception {
public class Ts2JavaException extends RuntimeException {
public Ts2JavaException(String message) {
super(message);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@

package com.caoccao.javet.buddy.ts2java.ast;

import com.caoccao.javet.buddy.ts2java.Ts2JavaException;
import com.caoccao.javet.swc4j.ast.Swc4jAst;
import net.bytebuddy.dynamic.DynamicType;

public abstract class BaseTs2JavaAst<AST extends Swc4jAst> {
public abstract DynamicType.Builder<?> transpile(DynamicType.Builder<?> builder, AST ast) throws Ts2JavaException;
public abstract DynamicType.Builder<?> transpile(DynamicType.Builder<?> builder, AST ast);
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ public static Class<?> getClass(Swc4jAstBindingIdent ast) {
}

public static String getIdent(Swc4jAstBindingIdent ast) {
return ast.getId().getSym();
return Ts2JavaAstIdent.getSym(ast.getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.caoccao.javet.buddy.ts2java.ast;

import com.caoccao.javet.buddy.ts2java.Ts2JavaException;
import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstClass;
import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstClassMethod;
import com.caoccao.javet.swc4j.ast.interfaces.ISwc4jAstClassMember;
Expand All @@ -26,8 +25,7 @@ public final class Ts2JavaAstClass extends BaseTs2JavaAst<Swc4jAstClass> {
@Override
public DynamicType.Builder<?> transpile(
DynamicType.Builder<?> builder,
Swc4jAstClass ast)
throws Ts2JavaException {
Swc4jAstClass ast) {
for (ISwc4jAstClassMember classMember : ast.getBody()) {
switch (classMember.getType()) {
case ClassMethod:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.caoccao.javet.buddy.ts2java.ast;

import com.caoccao.javet.buddy.ts2java.Ts2JavaException;
import com.caoccao.javet.swc4j.ast.stmt.Swc4jAstClassDecl;
import com.caoccao.javet.utils.StringUtils;
import net.bytebuddy.dynamic.DynamicType;
Expand All @@ -35,11 +34,10 @@ public String getPackageName() {
@Override
public DynamicType.Builder<?> transpile(
DynamicType.Builder<?> builder,
Swc4jAstClassDecl ast)
throws Ts2JavaException {
Swc4jAstClassDecl ast) {
String className = StringUtils.isEmpty(packageName)
? ast.getIdent().getSym()
: packageName + "." + ast.getIdent().getSym();
? Ts2JavaAstIdent.getSym(ast.getIdent())
: packageName + "." + Ts2JavaAstIdent.getSym(ast.getIdent());
builder = builder.name(className);
builder = new Ts2JavaAstClass().transpile(builder, ast.getClazz());
return builder;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@

package com.caoccao.javet.buddy.ts2java.ast;

import com.caoccao.javet.buddy.ts2java.Ts2JavaException;
import com.caoccao.javet.buddy.ts2java.compiler.JavaStackFrame;
import com.caoccao.javet.buddy.ts2java.compiler.JavaStackObject;
import com.caoccao.javet.swc4j.ast.clazz.Swc4jAstFunction;
Expand All @@ -25,10 +24,11 @@
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.implementation.MethodDelegation;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Stack;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public final class Ts2JavaAstClassFunction extends BaseTs2JavaAst<Swc4jAstFunction> {
private final Swc4jAstAccessibility accessibility;
Expand All @@ -50,19 +50,15 @@ public String getName() {
@Override
public DynamicType.Builder<?> transpile(
DynamicType.Builder<?> builder,
Swc4jAstFunction ast)
throws Ts2JavaException {
Swc4jAstFunction ast) {
final Visibility visibility = Ts2JavaAstAccessibility.getVisibility(accessibility);
final Class<?> returnType = ast.getReturnType()
.map(Ts2JavaAstTsTypeAnn::getClass)
.orElse((Class) Object.class);
final Stack<JavaStackFrame> stackFrames = new Stack<>();
final List<JavaStackObject> stackObjects = new ArrayList<>();
final int size = ast.getParams().size();
for (int i = 0; i < size; i++) {
JavaStackObject stackObject = Ts2JavaAstParam.getStackObject(i + 1, ast.getParams().get(i));
stackObjects.add(stackObject);
}
final List<JavaStackObject> stackObjects = IntStream.range(0, ast.getParams().size())
.mapToObj(i -> Ts2JavaAstParam.getStackObject(i + 1, ast.getParams().get(i)))
.collect(Collectors.toList());
final JavaStackFrame stackFrame = new JavaStackFrame(stackObjects);
stackFrames.push(stackFrame);
final Class<?>[] parameters = stackFrame.getObjects().stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ public final class Ts2JavaAstClassMethod extends BaseTs2JavaAst<Swc4jAstClassMet
@Override
public DynamicType.Builder<?> transpile(
DynamicType.Builder<?> builder,
Swc4jAstClassMethod ast)
throws Ts2JavaException {
Swc4jAstClassMethod ast) {
if (ast.isStatic()) {
throw new Ts2JavaException("Not implemented");
}
Expand All @@ -38,7 +37,7 @@ public DynamicType.Builder<?> transpile(
if (!(ast.getKey() instanceof Swc4jAstIdentName)) {
throw new Ts2JavaException("Function ident type " + ast.getKey().getClass().getSimpleName() + " is not supported");
}
String name = ast.getKey().as(Swc4jAstIdentName.class).getSym();
String name = Ts2JavaAstIdentName.getSym(ast.getKey().as(Swc4jAstIdentName.class));
Swc4jAstAccessibility accessibility = ast.getAccessibility().orElse(Swc4jAstAccessibility.Public);
builder = new Ts2JavaAstClassFunction(name, accessibility).transpile(builder, ast.getFunction());
return builder;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* 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;

import com.caoccao.javet.swc4j.ast.expr.Swc4jAstIdent;

public final class Ts2JavaAstIdent {
private Ts2JavaAstIdent() {
}

public static String getSym(Swc4jAstIdent ast) {
return ast.getSym();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
/*
* 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;

import com.caoccao.javet.swc4j.ast.expr.Swc4jAstIdentName;

public final class Ts2JavaAstIdentName {
private Ts2JavaAstIdentName() {
}

public static String getSym(Swc4jAstIdentName ast) {
return ast.getSym();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public final class Ts2JavaAstParam {
private Ts2JavaAstParam() {
}

public static JavaStackObject getStackObject(int index, Swc4jAstParam ast) throws Ts2JavaException {
public static JavaStackObject getStackObject(int index, Swc4jAstParam ast) {
switch (ast.getPat().getType()) {
case BindingIdent:
String ident = Ts2JavaAstBindingIdent.getIdent(ast.getPat().as(Swc4jAstBindingIdent.class));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ private Ts2JavaAstTsEntityName() {
public static String getName(ISwc4jAstTsEntityName ast) {
switch (ast.getType()) {
case Ident:
Swc4jAstIdent ident = ast.as(Swc4jAstIdent.class);
return ident.getSym();
return Ts2JavaAstIdent.getSym(ast.as(Swc4jAstIdent.class));
default:
return null;
}
Expand Down

0 comments on commit b0a6cd7

Please sign in to comment.