diff --git a/.github/workflows/documentation.yml b/.github/workflows/documentation.yml index 5aba27ce9a..6aa63e2921 100644 --- a/.github/workflows/documentation.yml +++ b/.github/workflows/documentation.yml @@ -36,7 +36,7 @@ jobs: - name: Check C coverage run: doxygen Doxyfile - name: Check Java coverage - run: javadoc -Xdoclint:all,-missing -d doc/java -sourcepath java/api/target/generated-sources/java/:java/api/src/main/java org.ruby_lang.prism + run: javadoc -Xdoclint:all,-missing -d doc/java -sourcepath java/api/src/main/java-templates/:java/api/src/main/java org.ruby_lang.prism - name: Generate Rust documentation run: | bundle exec rake cargo:build diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index f1b855bdeb..50223b9a85 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -51,7 +51,7 @@ jobs: - name: Build with Doxygen run: doxygen Doxyfile - name: Build with JavaDoc - run: javadoc -Xdoclint:all,-missing -d doc/java -sourcepath java/api/target/generated-sources/java/:java/api/src/main/java org.ruby_lang.prism + run: javadoc -Xdoclint:all,-missing -d doc/java -sourcepath java/api/src/main/java-templates/:java/api/src/main/java org.ruby_lang.prism - name: Build with rustdoc run: | bundle exec rake cargo:build diff --git a/.github/workflows/java-wasm-bindings.yml b/.github/workflows/java-wasm-bindings.yml index 3f39c7a1d6..7fe24455a7 100644 --- a/.github/workflows/java-wasm-bindings.yml +++ b/.github/workflows/java-wasm-bindings.yml @@ -55,4 +55,4 @@ jobs: - uses: actions/upload-artifact@v7 with: name: prism.wasm - path: java/wasm/src/test/resources/prism.wasm + path: java/wasm/src/main/wasm/prism.wasm diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2c279f2f22..67f6af3b30 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -199,6 +199,15 @@ jobs: bundler-cache: true - name: Run Java Loader test run: PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 PRISM_JAVA_BACKEND=truffleruby bundle exec rake compile + - name: Archive sources for TruffleRuby + run: | + jar --create --file java/prism-truffleruby-sources.jar -C java/api/src/main/java `ls -r java/api/src/main/java` + jar --update --file java/prism-truffleruby-sources.jar -C java/api/src/main/java-templates `ls -r java/api/src/main/java-templates` + jar --update --file java/prism-truffleruby-sources.jar -C java/native/src/main/java `ls -r java/native/src/main/java` + - uses: actions/upload-artifact@v7 + with: + name: truffleruby-sources + path: java/prism-truffleruby-sources.jar lex-ruby: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index fcdec6fb0a..cddb8cfa25 100644 --- a/.gitignore +++ b/.gitignore @@ -42,7 +42,7 @@ out.svg /java/org/ruby_lang/prism/AbstractNodeVisitor.java /java/org/ruby_lang/prism/Loader.java /java/org/ruby_lang/prism/Nodes.java -/java/wasm/src/test/resources/prism.wasm +/java/wasm/src/main/wasm/prism.wasm /lib/prism/compiler.rb /lib/prism/dispatcher.rb /lib/prism/dot_visitor.rb diff --git a/Makefile b/Makefile index 039efee72c..0f6f5264d1 100644 --- a/Makefile +++ b/Makefile @@ -31,7 +31,7 @@ all: shared static shared: build/libprism.$(SOEXT) static: build/libprism.a wasm: javascript/src/prism.wasm -java-wasm: java/wasm/src/test/resources/prism.wasm +java-wasm: java/wasm/src/main/wasm/prism.wasm build/libprism.$(SOEXT): $(SHARED_OBJECTS) $(ECHO) "linking $@ with $(CC)" @@ -51,7 +51,7 @@ javascript/src/prism.wasm: Makefile $(SOURCES) $(HEADERS) -Oz -g0 -flto -fdata-sections -ffunction-sections \ -o $@ $(SOURCES) -java/wasm/src/test/resources/prism.wasm: Makefile $(SOURCES) $(HEADERS) +java/wasm/src/main/wasm/prism.wasm: Makefile $(SOURCES) $(HEADERS) $(ECHO) "building $@" $(Q) $(MAKEDIRS) $(@D) $(Q) $(WASI_SDK_PATH)/bin/clang \ diff --git a/docs/configuration.md b/docs/configuration.md index 4b23b7f46d..cc54a7ab98 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -8,9 +8,9 @@ A lot of code in prism's repository is templated from a single configuration fil * `include/prism/node_new.h` - for defining the functions that create the nodes in C * `javascript/src/deserialize.js` - for defining how to deserialize the nodes in JavaScript * `javascript/src/nodes.js` - for defining the nodes in JavaScript -* `java/api/target/generated-sources/java/org/ruby_lang/prism/AbstractNodeVisitor.java` - for defining the visitor interface for the nodes in Java -* `java/api/target/generated-sources/java/org/ruby_lang/prism/Loader.java` - for defining how to deserialize the nodes in Java -* `java/api/target/generated-sources/java/org/ruby_lang/prism/Nodes.java` - for defining the nodes in Java +* `java/api/src/main/java-templates/org/ruby_lang/prism/AbstractNodeVisitor.java` - for defining the visitor interface for the nodes in Java +* `java/api/src/main/java-templates/org/ruby_lang/prism/Loader.java` - for defining how to deserialize the nodes in Java +* `java/api/src/main/java-templates/org/ruby_lang/prism/Nodes.java` - for defining the nodes in Java * `lib/prism/compiler.rb` - for defining the compiler for the nodes in Ruby * `lib/prism/dispatcher.rb` - for defining the dispatch visitors for the nodes in Ruby * `lib/prism/dot_visitor.rb` - for defining the dot visitor for the nodes in Ruby diff --git a/java/.gitignore b/java/.gitignore index a88111250b..e61251f358 100644 --- a/java/.gitignore +++ b/java/.gitignore @@ -1,4 +1,7 @@ +api/src/main/java-templates api/target native/target +wasm/src/main/wasm wasm/target +target .idea diff --git a/java/README.md b/java/README.md index 6380850e00..0dd4215777 100644 --- a/java/README.md +++ b/java/README.md @@ -18,7 +18,7 @@ Sources under `api` are generated from templates in `../templates`. Those source $ PRISM_EXCLUDE_PRETTYPRINT=1 PRISM_SERIALIZE_ONLY_SEMANTICS_FIELDS=1 bundle exec rake templates ``` -The files go under `api/target/generated-sources/java` and will be removed with `mvn clean`. +The files are generated under `api/src/main/java-templates` and will not be removed with `mvn clean`. ### WASM build of Prism @@ -28,7 +28,7 @@ The `wasm` project needs a WASM build of Prism to be generated with the followin $ make java-wasm WASI_SDK_PATH= ``` -The files go under `wasm/target/generated-sources/wasm` and will be removed with `mvn clean`. +The build is generated under `wasm/src/main/wasm` and will not be removed with `mvn clean`. ### Build and install diff --git a/java/api/pom.xml b/java/api/pom.xml index 043173366c..396fa33161 100644 --- a/java/api/pom.xml +++ b/java/api/pom.xml @@ -27,7 +27,7 @@ - target/generated-sources/java + src/main/java-templates diff --git a/java/native/src/main/java/org/ruby_lang/prism/Parser.java b/java/native/src/main/java/org/ruby_lang/prism/jni/Parser.java similarity index 91% rename from java/native/src/main/java/org/ruby_lang/prism/Parser.java rename to java/native/src/main/java/org/ruby_lang/prism/jni/Parser.java index 5c60977d80..49d8d731a8 100644 --- a/java/native/src/main/java/org/ruby_lang/prism/Parser.java +++ b/java/native/src/main/java/org/ruby_lang/prism/jni/Parser.java @@ -1,4 +1,4 @@ -package org.ruby_lang.prism; +package org.ruby_lang.prism.jni; public abstract class Parser { diff --git a/java/wasm/pom.xml b/java/wasm/pom.xml index d652780606..3ec7525bb2 100644 --- a/java/wasm/pom.xml +++ b/java/wasm/pom.xml @@ -115,7 +115,7 @@ org.ruby_lang.prism.wasm.PrismParser - src/test/resources/prism.wasm + src/main/wasm/prism.wasm diff --git a/java/wasm/src/main/java-templates/org/ruby_lang/prism/wasm/WasmResource.java b/java/wasm/src/main/java-templates/org/ruby_lang/prism/wasm/WasmResource.java index 785c2bd916..d52466e2a9 100644 --- a/java/wasm/src/main/java-templates/org/ruby_lang/prism/wasm/WasmResource.java +++ b/java/wasm/src/main/java-templates/org/ruby_lang/prism/wasm/WasmResource.java @@ -1,7 +1,7 @@ package org.ruby_lang.prism.wasm; public final class WasmResource { - public static final String absoluteFile = "file://${project.basedir}/src/test/resources/prism.wasm"; + public static final String absoluteFile = "file://${project.basedir}/src/main/wasm/prism.wasm"; private WasmResource() {} } diff --git a/java/wasm/src/test/resources/.gitignore b/java/wasm/src/test/resources/.gitignore deleted file mode 100644 index 602a758338..0000000000 --- a/java/wasm/src/test/resources/.gitignore +++ /dev/null @@ -1 +0,0 @@ -prism.wasm diff --git a/templates/java/api/target/generated-sources/java/org/ruby_lang/prism/AbstractNodeVisitor.java.erb b/templates/java/api/src/main/java-templates/org/ruby_lang/prism/AbstractNodeVisitor.java.erb similarity index 100% rename from templates/java/api/target/generated-sources/java/org/ruby_lang/prism/AbstractNodeVisitor.java.erb rename to templates/java/api/src/main/java-templates/org/ruby_lang/prism/AbstractNodeVisitor.java.erb diff --git a/templates/java/api/target/generated-sources/java/org/ruby_lang/prism/Loader.java.erb b/templates/java/api/src/main/java-templates/org/ruby_lang/prism/Loader.java.erb similarity index 100% rename from templates/java/api/target/generated-sources/java/org/ruby_lang/prism/Loader.java.erb rename to templates/java/api/src/main/java-templates/org/ruby_lang/prism/Loader.java.erb diff --git a/templates/java/api/target/generated-sources/java/org/ruby_lang/prism/Nodes.java.erb b/templates/java/api/src/main/java-templates/org/ruby_lang/prism/Nodes.java.erb similarity index 100% rename from templates/java/api/target/generated-sources/java/org/ruby_lang/prism/Nodes.java.erb rename to templates/java/api/src/main/java-templates/org/ruby_lang/prism/Nodes.java.erb diff --git a/templates/template.rb b/templates/template.rb index 34c1afb0c6..7638c9c058 100755 --- a/templates/template.rb +++ b/templates/template.rb @@ -684,9 +684,9 @@ def locals "javascript/src/deserialize.js", "javascript/src/nodes.js", "javascript/src/visitor.js", - "java/api/target/generated-sources/java/org/ruby_lang/prism/Loader.java", - "java/api/target/generated-sources/java/org/ruby_lang/prism/Nodes.java", - "java/api/target/generated-sources/java/org/ruby_lang/prism/AbstractNodeVisitor.java", + "java/api/src/main/java-templates/org/ruby_lang/prism/Loader.java", + "java/api/src/main/java-templates/org/ruby_lang/prism/Nodes.java", + "java/api/src/main/java-templates/org/ruby_lang/prism/AbstractNodeVisitor.java", "lib/prism/compiler.rb", "lib/prism/dispatcher.rb", "lib/prism/dot_visitor.rb",