diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml
index 95c25af..6dc4793 100644
--- a/.github/workflows/build.yaml
+++ b/.github/workflows/build.yaml
@@ -34,6 +34,22 @@ jobs:
- name: Test with Maven
run: mvn -B --update-snapshots -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn compile test
+ - name: Publish Test Reports
+ if: ${{ !cancelled() }}
+ uses: ctrf-io/github-test-reporter@v1
+ with:
+ report-path: 'target/rascal-test-reports/*.json'
+ github-report: true
+ file-report: true
+ pull-request-report: true
+ summary-delta-report: true
+ insights-report: true
+ fail-rate-report: true
+ slowest-report: true
+ upload-artifact: true
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
- name: Attach artifact
id: build-artifact
uses: SWAT-engineering/maven-full-artifacts-action@v1
diff --git a/pom.xml b/pom.xml
index 9c634fc..1d9cfea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,8 +44,8 @@
UTF-8
3.9.9
11
- 0.43.0-RC1
- 0.31.0
+ 0.43.0
+ 0.32.2
@@ -89,7 +89,7 @@
org.rascalmpl
rascal-maven-plugin
- 0.30.0-RC29
+ 0.32.0-RC7
${project.build.outputDirectory}
@@ -104,6 +104,13 @@
compile
+
+ default-test
+ test
+
+ test
+
+
default-package
prepare-package
@@ -132,31 +139,6 @@
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 3.5.2
-
-
- default-test
- test
-
- test
-
-
-
-
-
- -ea
- -Xmx1G
- -Xss128m
- -Dfile.encoding=UTF-8
-
-
- **/RunTests.java
-
-
-
org.apache.maven.plugins
maven-release-plugin
@@ -222,11 +204,6 @@
0.6.0
-
- junit
- junit
- 4.13.2
-
org.ow2.asm
asm
diff --git a/src/lang/java/m3/Core.rsc b/src/lang/java/m3/Core.rsc
index 1ce5c33..8cf3b3f 100644
--- a/src/lang/java/m3/Core.rsc
+++ b/src/lang/java/m3/Core.rsc
@@ -56,9 +56,9 @@ These are the kinds of logical names that can be found in a Java M3 model:
* `unresolved:///` is from general M3 and means a name was tried to be resolved, but this was unsuccessful. Typically this means either the Java source code was statically incorrect, or the _classpath_ for configuring AST or M3 extraction was incomplete.
* `java+class:///` is a fully resolved and qualified class name
* `java+interface:///` is a fully resolved and qualified interface name
-* `java+classOrInterface:///` is the fully qualified name of an external class or interface that has not been resolved (since it is not on the classpath but it is used).
+* `java+classorinterface:///` is the fully qualified name of an external class or interface that has not been resolved (since it is not on the classpath but it is used).
* `java+module:///` the root scheme points to _any or all_ modules and when it has a qualified name it is a specific module (a la Java 9's module system).
-* `java+compilationUnit:///` is the name of a file that contains an entire Java compilationUnit. The path name starts from the root of the source path for the current analysis run, or from the jar file that contains the .class bytecode currently under analysis. Typically a source compilation unit has one class member in the `containment` relation, but this is not required. There could be more private or protected classes in the same unit.
+* `java+compilationunit:///` is the name of a file that contains an entire Java compilationUnit. The path name starts from the root of the source path for the current analysis run, or from the jar file that contains the .class bytecode currently under analysis. Typically a source compilation unit has one class member in the `containment` relation, but this is not required. There could be more private or protected classes in the same unit.
* `java+constructor:///` is the fully qualified constructor method of class (including parameter types to distinguish it from the other constructors)
* `java+method:///` is the fully qualified constructor method of class (including parameter types to distinguish it from the other constructors)
* `java+initializer:///` unique address of an initializer expression for a field or variable.
@@ -67,13 +67,13 @@ These are the kinds of logical names that can be found in a Java M3 model:
* `java+field:///` unique address for fields of classes and interfaces.
* `java+enum:///` is a fully resolved and qualified name of an enum class.
* `java+array:///` is the name of an array type
-* `java+typeVariable:///` is the unique address of an open type variable (of a class or method)
-* `java+wildcardType:///` is the address of an anonymous type variable.
-* `java+enumConstant:///` is the unique address of one of the constants of an `enum` type.
+* `java+typevariable:///` is the unique address of an open type variable (of a class or method)
+* `java+wildcardtype:///` is the address of an anonymous type variable.
+* `java+enumconstant:///` is the unique address of one of the constants of an `enum` type.
* `java+field:///` is the unique address of a field in a class, interface or enum.
-* `java+arrayLength:///` is the singleton address for the length field of all arrays in Java.
-* `java+primitiveType:///` is used when type resolution points to a builtin primitive in Java. These names also often occur
-* `java+anonymousClass:///` uniquely labels anonymous classes, however since indexing is used the names are not stable between different versions of the same code, or between binary and source extractions.
+* `java+arraylength:///` is the singleton address for the length field of all arrays in Java.
+* `java+primitivetype:///` is used when type resolution points to a builtin primitive in Java. These names also often occur
+* `java+anonymousclass:///` uniquely labels anonymous classes, however since indexing is used the names are not stable between different versions of the same code, or between binary and source extractions.
as elements of other schemes, for example to uniquel encode parameter types of methods.
}
@benefits{
diff --git a/src/lang/java/m3/internal/BindingsResolver.java b/src/lang/java/m3/internal/BindingsResolver.java
index e08ca3f..6f9092c 100644
--- a/src/lang/java/m3/internal/BindingsResolver.java
+++ b/src/lang/java/m3/internal/BindingsResolver.java
@@ -193,7 +193,7 @@ private ISourceLocation resolveFieldAccess(FieldAccess node) {
if (tb != null && tb.isArray() && "length".equals(node.getName().getIdentifier())) {
ISourceLocation arrayType = resolveBinding(tb);
- return makeBinding("java+arrayLength", arrayType.getAuthority(), arrayType.getPath());
+ return makeBinding("java+arraylength", arrayType.getAuthority(), arrayType.getPath());
}
return resolveBinding(node.resolveFieldBinding());
@@ -246,7 +246,7 @@ private ISourceLocation resolveQualifiedName(QualifiedName node) {
if (tb != null && tb.isArray() && "length".equals(node.getName().getIdentifier())) {
ISourceLocation arrayType = resolveBinding(tb);
- return makeBinding("java+arrayLength", arrayType.getAuthority(), arrayType.getPath());
+ return makeBinding("java+arraylength", arrayType.getAuthority(), arrayType.getPath());
}
return resolveBinding(node.getName(), false);
diff --git a/src/lang/java/m3/internal/SourceConverter.java b/src/lang/java/m3/internal/SourceConverter.java
index 91bbc76..438586e 100644
--- a/src/lang/java/m3/internal/SourceConverter.java
+++ b/src/lang/java/m3/internal/SourceConverter.java
@@ -511,7 +511,7 @@ public boolean visit(QualifiedName node) {
insert(fieldAccess, getParent(), ownValue);
}
- if (((ISourceLocation) ownValue).getScheme().equals("java+arrayLength")) {
+ if (((ISourceLocation) ownValue).getScheme().equals("java+arraylength")) {
insert(fieldAccess, getParent(), ownValue);
}
diff --git a/src/lang/java/tests/RunTests.java b/src/lang/java/tests/RunTests.java
deleted file mode 100644
index 23cf645..0000000
--- a/src/lang/java/tests/RunTests.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2009-2025, NWO-I Centrum Wiskunde & Informatica (CWI)
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package lang.java.tests;
-
-import org.junit.runner.RunWith;
-import org.rascalmpl.test.infrastructure.RascalJUnitTestPrefix;
-import org.rascalmpl.test.infrastructure.RascalJUnitTestRunner;
-
-@RunWith(RascalJUnitTestRunner.class)
-@RascalJUnitTestPrefix("lang::java::tests")
-public class RunTests {
-
-}