Skip to content

Commit

Permalink
Merge
Browse files Browse the repository at this point in the history
  • Loading branch information
raikasdev committed Aug 31, 2024
2 parents 8e94cf5 + 2cfb656 commit e57aff5
Show file tree
Hide file tree
Showing 16 changed files with 111 additions and 33 deletions.
5 changes: 3 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-java@v1
- uses: actions/setup-java@v3
with:
java-version: 21
distribution: 'adopt' # See 'Supported distributions' for available options
java-version: '21'
- name: Gradle build
run: ./gradlew shadowJar
- name: Download JDK sources
Expand Down
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 20 additions & 0 deletions .idea/jarRepositories.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
4 changes: 4 additions & 0 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
#Sun Aug 25 23:56:38 EEST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
<<<<<<< HEAD
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
=======
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
>>>>>>> 2cfb656a05332f3a4c5291a04ee57404fd5a4b94
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
3 changes: 3 additions & 0 deletions gradlew
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ esac

CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar


# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
Expand Down Expand Up @@ -129,6 +130,7 @@ fi
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`

JAVACMD=`cygpath --unix "$JAVACMD"`

# We build the pattern for arguments to be converted via cygpath
Expand Down Expand Up @@ -180,4 +182,5 @@ APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"

echo $JAVACMD $@
exec "$JAVACMD" "$@"
22 changes: 4 additions & 18 deletions gradlew.bat
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
if "%ERRORLEVEL%" == "0" goto execute

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Expand All @@ -54,7 +54,7 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init
if exist "%JAVA_EXE%" goto execute

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
Expand All @@ -64,28 +64,14 @@ echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar


@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*

:end
@rem End local scope for the variables with windows NT shell
Expand Down
2 changes: 1 addition & 1 deletion httpclient-types/package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "@craftjs-types/java.net.http",
"name": "@craftjs-typings/java.net.http",
"version": "VERSION",
"description": "Java 11 HttpClient (java.net.http) types",
"repository": {
Expand Down
4 changes: 2 additions & 2 deletions java-core-types/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
"in": ["/usr/lib/jvm/openjdk-21/src.zip"],
"out": "java-core-types",
"offset": "java.base",
"include": ["java.lang", "java.util", "java.io", "java.nio"],
"include": ["java.lang", "java.util", "java.io", "java.nio", "java.time", "javax.imageio", "java.awt"],
"exclude": ["java.lang.Math",
"java.util.concurrent",
"java.lang.StrictMath",
"java.util.concurrent",
"java.util.jar.Pack200",
"java.util.spi"
],
Expand Down
31 changes: 24 additions & 7 deletions src/main/java/io/github/bensku/tsbind/AstGenerator.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@
import com.github.javaparser.resolution.declarations.ResolvedReferenceTypeDeclaration;
import com.github.javaparser.resolution.declarations.ResolvedValueDeclaration;
import com.github.javaparser.resolution.types.ResolvedReferenceType;
import com.github.javaparser.resolution.types.ResolvedType;
import com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserFieldDeclaration;

import io.github.bensku.tsbind.ast.AstNode;
import io.github.bensku.tsbind.ast.Constructor;
Expand Down Expand Up @@ -67,8 +69,9 @@ public AstGenerator(JavaParser parser, List<String> blacklist) {
*/
public Optional<TypeDefinition> parseType(SourceUnit source) {
// FIXME don't log errors here, CLI might not be only user in future

ParseResult<CompilationUnit> result = parser.parse(source.code);
// JAVAPARSER DOESNT SUPPORT sealed CLASSES! Very spaghetti solution but works
String code = source.code.replaceAll("sealed ", "").replaceAll("record", "class").replaceAll("@NonExtendable", "").replaceAll("@Internal", "");
ParseResult<CompilationUnit> result = parser.parse(code);
if (!result.isSuccessful()) {
//throw new IllegalArgumentException("failed to parse given source code: " + result.getProblems());
System.err.println("failed to parse " + source.name + ": " + result.getProblems());
Expand Down Expand Up @@ -99,7 +102,11 @@ private List<Parameter> getParameters(ResolvedMethodLikeDeclaration method, Bool
for (int i = 0; i < method.getNumberOfParams(); i++) {
ResolvedParameterDeclaration param = method.getParam(i);
TypeRef type = TypeRef.fromType(param.getType(), nullable[i]);
params.add(new Parameter(param.getName(), type, param.isVariadic()));
if (param.getName().equals("return")) {
params.add(new Parameter("returnTo", type, param.isVariadic()));
} else {
params.add(new Parameter(param.getName(), type, param.isVariadic()));
}
}
return params;
}
Expand Down Expand Up @@ -162,7 +169,7 @@ private void processMember(String typeName, TypeDeclaration<?> type, TypeDefinit
// Work as if other non-public members did not exist
return; // Neither implicitly or explicitly public
}

// Process type depending on what it is
if (member.isTypeDeclaration()) {
// Recursively process an inner type
Expand Down Expand Up @@ -192,7 +199,7 @@ private Optional<TypeDefinition> processType(String typeName, TypeDeclaration<?>
members.add(member);
}
};

// If this is an enum, generate enum constants and compiler-generated methods
// JavaParser doesn't consider enum constants "members"
if (type.isEnumDeclaration()) {
Expand Down Expand Up @@ -287,6 +294,7 @@ private Optional<TypeDefinition> processType(String typeName, TypeDeclaration<?>

// Create type definition
String javadoc = getJavadoc(type);

return Optional.of(new TypeDefinition(javadoc, type.isStatic(), typeRef, typeKind, isAbstract,
superTypes, interfaces, members));
}
Expand Down Expand Up @@ -339,12 +347,15 @@ private boolean isPublic(TypeDeclaration<?> type, BodyDeclaration<?> member) {
if (access == AccessSpecifier.PUBLIC) {
return true;
}
// In new Javaparser versions it seems that in interfaces it can happen that the access can be NONE
if (access == AccessSpecifier.NONE) {
access = AccessSpecifier.PRIVATE;
}
// Default ("package private") access in interfaces is public
if (access == AccessSpecifier.PRIVATE && type.isClassOrInterfaceDeclaration()) {
return type.asClassOrInterfaceDeclaration().isInterface();
}
// Enum constants are handled separately, JavaParser doesn't consider them members

return false; // No reason to consider member public
}

Expand Down Expand Up @@ -435,7 +446,13 @@ private class FieldProps {
}

private void processFieldValue(Consumer<Member> addMember, FieldProps props) {
TypeRef type = TypeRef.fromType(props.value.getType(), props.nullable);
TypeRef type = null;
if (props.value instanceof JavaParserFieldDeclaration) {
JavaParserFieldDeclaration dec = (JavaParserFieldDeclaration) props.value;
type = TypeRef.fromType(dec.getVariableDeclarator().getType().resolve(), props.nullable);
} else {
type = TypeRef.fromType(props.value.getType(), props.nullable);
}
// Add normal field to AST
addMember.accept(new Field(props.value.getName(), type, props.javadoc,
props.isPublic, props.isStatic, props.isFinal));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/github/bensku/tsbind/ast/Parameter.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ public class Parameter implements AstNode {
/**
* Name of the parameter.
*/
public final String name;
public String name;

/**
* Parameter type.
Expand Down
15 changes: 13 additions & 2 deletions src/main/java/io/github/bensku/tsbind/binding/TsMembers.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import io.github.bensku.tsbind.ast.Parameter;
import io.github.bensku.tsbind.ast.Setter;

import java.util.stream.Collectors;

/**
* Code generators for different types of class members
* and simple types needed by them.
Expand Down Expand Up @@ -69,7 +71,12 @@ public class TsMembers {

// Method parameters (if any)
out.print("(");
out.print(node.params, ", ");
out.print(node.params.stream().map((param) -> {
if (param.name.equals("return")) { // Illegal name in typescript
param.name = "returnTo";
}
return param;
}).collect(Collectors.toList()), ", ");
out.print("): ");

out.print(node.returnType).print(";"); // Return type
Expand All @@ -95,6 +102,10 @@ public class TsMembers {
if (node.isStatic) {
out.print("static ");
}
out.print("set %s(%s);", node.name, node.params.get(0));
Parameter parameter = node.params.get(0);
if (parameter.name.equals("return")) {
parameter.name = "returnTo";
}
out.print("set %s(%s);", node.name, parameter);
};
}

0 comments on commit e57aff5

Please sign in to comment.