diff --git a/.gitignore b/.gitignore index 457059f26abfe7ed87c1cbd55c13f021378d67ab..0ce1ed6d4729d8351479cdf3f2df31e9f9f16d7d 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,7 @@ src/test/jastadd/relations/Relations.jadd src/test/jastadd/lowerbounds/LowerBounds.ast src/test/jastadd/lowerbounds/LowerBounds.jadd src/test/jastadd/multiple/Multiple.ast -src/test/jastadd/multiple/Multiple.jadd \ No newline at end of file +src/test/jastadd/multiple/Multiple.jadd +src/test/jastadd/resolver/Resolver.ast +src/test/jastadd/resolver/Resolver.jadd +src/test/jastadd/resolver/ResolverRefResolver.jadd \ No newline at end of file diff --git a/build.gradle b/build.gradle index 8d6b2101710a36871e6aee3618dc27e55ba81ef9..347c375e2fd4c9b1253248ba0590da68428e4776 100644 --- a/build.gradle +++ b/build.gradle @@ -179,6 +179,28 @@ task compileMultipleTest(type: JavaExec, group: 'verification') { args '--o=src/test/java-gen/', '--package=multiple.ast', 'src/test/jastadd/multiple/Multiple.ast', 'src/test/jastadd/multiple/Multiple.jadd', 'src/test/jastadd/Utils.jadd' } +task preprocessResolverTest(type: JavaExec, group: 'verification') { + + doFirst { + delete 'src/test/jastadd/resolver/Resolver.ast', 'src/test/jastadd/resolver/Resolver.jadd' + } + + classpath = sourceSets.main.runtimeClasspath + main = 'org.jastadd.relast.compiler.Compiler' + args 'src/test/jastadd/resolver/Resolver.relast', '--file', '--grammarName=src/test/jastadd/resolver/Resolver', '--resolverHelper' +} + +task compileResolverTest(type: JavaExec, group: 'verification') { + + doFirst { + delete 'src/test/java-gen/resolver' + } + + classpath = sourceSets.main.runtimeClasspath + main = 'org.jastadd.JastAdd' + args '--o=src/test/java-gen/', '--package=resolver.ast', 'src/test/jastadd/resolver/Resolver.ast', 'src/test/jastadd/resolver/Resolver.jadd', 'src/test/jastadd/resolver/ResolverUtils.jadd', 'src/test/jastadd/resolver/ResolverRefResolver.jadd', 'src/test/jastadd/resolver/MyRefResolver.jadd', 'src/test/jastadd/Utils.jadd' +} + test { outputs.upToDateWhen { false } @@ -194,4 +216,7 @@ test.dependsOn compileLowerBoundsTest compileLowerBoundsTest.dependsOn preprocessLowerBoundsTest test.dependsOn compileMultipleTest -compileMultipleTest.dependsOn preprocessMultipleTest \ No newline at end of file +compileMultipleTest.dependsOn preprocessMultipleTest + +test.dependsOn compileResolverTest +compileResolverTest.dependsOn preprocessResolverTest \ No newline at end of file diff --git a/tests/resolverHelper/MyRefResolver.jadd b/src/test/jastadd/resolver/MyRefResolver.jadd similarity index 63% rename from tests/resolverHelper/MyRefResolver.jadd rename to src/test/jastadd/resolver/MyRefResolver.jadd index 562f260f181c76828b81a2cc2bf25002d4f67d7a..c152e1756116acef242cf6077c77f8e909390fd3 100644 --- a/tests/resolverHelper/MyRefResolver.jadd +++ b/src/test/jastadd/resolver/MyRefResolver.jadd @@ -6,10 +6,5 @@ aspect MyRewrites { return root().findNamedElement(id); } - refine RefResolverStubs eq A.resolveRel2(String id) { - // default to context-independent name resolution - return resolveNamedElement(id); - } - } diff --git a/tests/resolverHelper/Grammar.relast b/src/test/jastadd/resolver/Resolver.relast similarity index 100% rename from tests/resolverHelper/Grammar.relast rename to src/test/jastadd/resolver/Resolver.relast diff --git a/tests/resolverHelper/Utils.jadd b/src/test/jastadd/resolver/ResolverUtils.jadd similarity index 91% rename from tests/resolverHelper/Utils.jadd rename to src/test/jastadd/resolver/ResolverUtils.jadd index eb9729cf42a323cfb654877e091f133316ca4a77..a8d547321c3231220cd02c3f94494c85afd0786f 100644 --- a/tests/resolverHelper/Utils.jadd +++ b/src/test/jastadd/resolver/ResolverUtils.jadd @@ -1,7 +1,4 @@ aspect Utils { - public String NamedElement.toString() { - return getName(); - } inh Root ASTNode.root(); eq Root.getA(int i).root() = this; diff --git a/tests/resolverHelper/All.java b/src/test/java/org/jastadd/relast/tests/ResolverHelper.java similarity index 64% rename from tests/resolverHelper/All.java rename to src/test/java/org/jastadd/relast/tests/ResolverHelper.java index e2f65cc6056dc37d51eff0a71abb0b421f3af46e..3e3eeff340ca4940d5aea1b14b58ef7613d22f71 100644 --- a/tests/resolverHelper/All.java +++ b/src/test/java/org/jastadd/relast/tests/ResolverHelper.java @@ -1,8 +1,16 @@ -import AST.*; -import java.util.*; +package org.jastadd.relast.tests; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import resolver.ast.A; +import resolver.ast.B; +import resolver.ast.NamedElement; +import resolver.ast.Root; + +import static org.junit.jupiter.api.Assertions.assertSame; @SuppressWarnings("ArraysAsListWithZeroOrOneArgument") -public class All extends AbstractTests { +class ResolverHelper { private Root r; private A a1; private A a2; @@ -11,27 +19,20 @@ public class All extends AbstractTests { private B b2; private B b3; - public static void main(String args[]) { - new All().test(); - } - - public void test() { - testNameRes1(); - } - - /** * rel A.Di1 -> B; */ - private void testNameRes1() { + @Test + void testNameRes1() { setup(); a1.setRel1(NamedElement.createRef("b2")); System.out.println("Rel 1 of a1 has type " + a1.getRel1().getClass().getSimpleName()); assertSame(a1.getRel1(), b2); } - private void setup() { + @BeforeEach + void setup() { r = new Root(); a1 = new A("a1"); a2 = new A("a2"); diff --git a/tests/Makefile b/tests/Makefile deleted file mode 100644 index 5a9e1b07fe213bbcb5e4e8fbf7dd97c3ae214ea6..0000000000000000000000000000000000000000 --- a/tests/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -all: - cd ../ && ./gradlew jar - cd valid && make test - cd errors && make test - cd multipleFiles && make test - cd resolverHelper && make test diff --git a/tests/resolverHelper/.gitignore b/tests/resolverHelper/.gitignore deleted file mode 100644 index 404a3fe3ffe2f90b8705ddae49ead7872ac9d95e..0000000000000000000000000000000000000000 --- a/tests/resolverHelper/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/AST/* -/Relations.ast -Relations.jadd -AllRefResolver.jadd diff --git a/tests/resolverHelper/AbstractTests.java b/tests/resolverHelper/AbstractTests.java deleted file mode 100644 index 3b86096602b5925e1bc0f41c7d75624404881bcb..0000000000000000000000000000000000000000 --- a/tests/resolverHelper/AbstractTests.java +++ /dev/null @@ -1,25 +0,0 @@ -public class AbstractTests { - protected void assertException() { - check(false, "should throw exception"); - } - protected void assertTrue(boolean b) { - check(b, "value should be true (is false)"); - } - protected void assertFalse(boolean b) { - check(!b, "value should be flase (is true)"); - } - protected void assertNull(Object obj) { - check(obj == null, "Object not null: " + obj); - } - protected void assertSame(Object o1, Object o2) { - check(o1 == o2, "Objects not same: " + o1 + ", " + o2); - } - protected void assertEquals(Object o1, Object o2) { - check(o1.equals(o2), "Objects not equals: " + o1 + ", " + o2); - } - protected void check(boolean b, String message) { - if (!b) { - throw new RuntimeException(message); - } - } -} \ No newline at end of file diff --git a/tests/resolverHelper/All.ast b/tests/resolverHelper/All.ast deleted file mode 100644 index 4e70b0704b8835a6805287c063d02b361ce8c652..0000000000000000000000000000000000000000 --- a/tests/resolverHelper/All.ast +++ /dev/null @@ -1,9 +0,0 @@ -Root ::= A* B*; -abstract NamedElement ::= <Name:String>; -A : NamedElement ::= <_impl_Rel1:NamedElement> <_impl_Rel2:NamedElement>; -B : NamedElement; - -__unresolvedRoot : Root ::= <__token:String>; -__unresolvedNamedElement : NamedElement ::= <__token:String>; -__unresolvedA : A ::= <__token:String>; -__unresolvedB : B ::= <__token:String>; diff --git a/tests/resolverHelper/All.jadd b/tests/resolverHelper/All.jadd deleted file mode 100644 index 98cade582fd7982ea7291686d98e8c14dce893e8..0000000000000000000000000000000000000000 --- a/tests/resolverHelper/All.jadd +++ /dev/null @@ -1,83 +0,0 @@ -import java.util.ArrayList; -import java.util.Collections; -aspect RelAstAPI { - public A.A(String Name) { - setName(Name); - } - public __unresolvedA.__unresolvedA(String Name, String __token) { - setName(Name); - set__token(__token); - } - // rel A.Rel1 -> NamedElement - public NamedElement A.getRel1() { - if (get_impl_Rel1() != null && get_impl_Rel1().unresolved()) { - set_impl_Rel1(resolveRel1(get_impl_Rel1().asUnresolvedNamedElement().get__token())); - } - return get_impl_Rel1(); - } - public void A.setRel1(NamedElement o) { - assertNotNull(o); - set_impl_Rel1(o); - } - - // rel A.Rel2 -> NamedElement - public NamedElement A.getRel2() { - if (get_impl_Rel2() != null && get_impl_Rel2().unresolved()) { - set_impl_Rel2(resolveRel2(get_impl_Rel2().asUnresolvedNamedElement().get__token())); - } - return get_impl_Rel2(); - } - public void A.setRel2(NamedElement o) { - assertNotNull(o); - set_impl_Rel2(o); - } - - public boolean ASTNode.violatesLowerBounds() { - return !getLowerBoundsViolations().isEmpty(); - } - public java.util.List<Pair<ASTNode, String>> ASTNode.getLowerBoundsViolations() { - ArrayList<Pair<ASTNode, String>> list = new ArrayList<>(); - computeLowerBoundsViolations(list); - return list; - } - public void ASTNode.computeLowerBoundsViolations(java.util.List<Pair<ASTNode, String>> list) { - for (int i = 0; i < getNumChildNoTransform(); i++) { - getChildNoTransform(i).computeLowerBoundsViolations(list); - } - } - public void A.computeLowerBoundsViolations(java.util.List<Pair<ASTNode, String>> list) { - if (getRel1() == null) { - list.add(new Pair<>(this, "Rel1")); - } - if (getRel2() == null) { - list.add(new Pair<>(this, "Rel2")); - } - super.computeLowerBoundsViolations(list); - } - public class Pair<T1, T2> { - public final T1 _1; - public final T2 _2; - public Pair(T1 _1, T2 _2) { - ASTNode.assertNotNull(_1); - ASTNode.assertNotNull(_2); - this._1 = _1; - this._2 = _2; - } - public boolean equals(Object other) { - if (other instanceof Pair) { - Pair<?,?> p = (Pair<?,?>) other; - return _1.equals(p._1) && _2.equals(p._2); - } else { - return false; - } - } - public int hashCode() { - return 31*_1.hashCode() + _2.hashCode(); - } - } - public static void ASTNode.assertNotNull(Object obj) { - if (obj == null) { - throw new NullPointerException(); - } - } -} diff --git a/tests/resolverHelper/Makefile b/tests/resolverHelper/Makefile deleted file mode 100644 index cc7fe4a185fed04d35c2b013cb31911b0f94ca56..0000000000000000000000000000000000000000 --- a/tests/resolverHelper/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -all: build-jar test -test: clean test1 - @echo "#" - @echo "# RESOLVER HELPER TESTS OK" - @echo "#" - -build-jar: - (cd ../../ && ./gradlew jar) -test1: - java -jar ../../build/libs/relast.jar Grammar.relast --file --grammarName=Relations --resolverHelper - java -jar ../../tools/jastadd2.jar --package=AST --rewrite=cnta Relations.ast Relations.jadd AllRefResolver.jadd MyRefResolver.jadd Utils.jadd - javac AST/*.java Relations.java - java Relations - -clean: - rm -rf AST - rm -f *.class - rm -f *.ast \ No newline at end of file