diff --git a/pom.xml b/pom.xml
index 9fc19714997..feba2b5d1c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -365,7 +365,7 @@
io.usethesource
vallang
- 1.0.0-RC2
+ 1.0.0-RC3
org.ow2.asm
diff --git a/src/org/rascalmpl/library/lang/rascal/matching/Fingerprint.rsc b/src/org/rascalmpl/library/lang/rascal/matching/Fingerprint.rsc
index 4f7afe99d87..002f9e78063 100644
--- a/src/org/rascalmpl/library/lang/rascal/matching/Fingerprint.rsc
+++ b/src/org/rascalmpl/library/lang/rascal/matching/Fingerprint.rsc
@@ -14,7 +14,11 @@ fingerprints, with compile-time information for generating switch cases that use
There are several explicit contracts implemented here:
* a fingerprint is (almost) never `0`.
* the fingerprint functions in this module implement exactly the fingerprinting of the run-time that the generated code will be linked against.
- This contract is tested with internal tests in this module.
+ This contract is tested with internal tests in this module: fingerprintAlignment and concreteFingerprintAlignment.
+ If these tests fail, it is possible that during a bootstrap cycle of 3 steps,
+ the contract is temporarily not satisfied in the first and second steps. To break the impasse, the code below allows us to generate fingerprints for
+ the _next_ run-time version, while the current run-time still runs the _previous_ version of the compiler. We have to disable the `concreteFingerprintAlignment`
+ and `fingerprintAlignment` tests temporarily during the first and second run.
* `value matches pattern ==> fingerprint(pattern) == fingerprint(value)` such that a fingerprint is always an over-approximation of matching. It may
never be the case that a value should match a pattern and the fingerprint contradicts this.
This contract is tested by the pattern matching tests for the interpreter and the compiler.
diff --git a/test/org/rascalmpl/MatchFingerprintTest.java b/test/org/rascalmpl/MatchFingerprintTest.java
index 93283cd5b1e..41614b94b05 100644
--- a/test/org/rascalmpl/MatchFingerprintTest.java
+++ b/test/org/rascalmpl/MatchFingerprintTest.java
@@ -70,13 +70,13 @@ public void testTreeApplFingerPrintStability() {
ITree tree = VF.appl(prod, VF.list());
assertEquals(tree.getMatchFingerprint(), "appl".hashCode() + 131 * 2);
- assertEquals(tree.getConcreteMatchFingerprint(), "tree".hashCode() + 41 * prod.hashCode());
+ assertEquals(tree.getConcreteMatchFingerprint(), "appl".hashCode() + 41 * prod.hashCode());
// and now WITH a keyword parameter
tree = (ITree) tree.asWithKeywordParameters().setParameter("src", loc);
assertEquals(tree.getMatchFingerprint(), "appl".hashCode() + 131 * 2);
- assertEquals(tree.getConcreteMatchFingerprint(), "tree".hashCode() + 41 * prod.hashCode());
+ assertEquals(tree.getConcreteMatchFingerprint(), "appl".hashCode() + 41 * prod.hashCode());
}
catch (FactTypeUseException | IOException e) {
fail(e.getMessage());