Closed istvanrath closed 11 years ago
perhaps @ujhelyiz 's latest changes about validation mechanisms have something to do with this issue too.
The validation changes I did should not change the cartesian validators... Passing null should not cause this issue, as in this case it is assumed, the entire EObject is faulty instead of a specified feature.
This is almost certainly not a dependency injection issue - the contents of the Diagnostics are not selected via DI; on the other hand, there are two different diagnostics at work here (one for parse errors and one for validations).
@istvanrath Questions for clarification:
@ujhelyiz The issue can be reproduced deterministically with Janos Bali's example on his instance models (uncomment the pattern defs and try with PersonPair and NotFriends:
pattern PersonPair(person1: Person, person2: Person) = {
person1 != person2;
}
pattern NotFriends(person: Person, friend: Person) = {
neg find PersonFriends(person, friend);
}
Ok, that was a stupid mistake. The cause of the issue was that at one place I mistakenly used the DiagnosticsChain of EValidators instead of a single Diagnostics (the child elements of the chain). There was no compile issue, as the Chain implements the Diagnostics interface.
Should be fixed now.
Fixed.
While playing with patterns that have a warning due to the cartesian product validator, I discovered that some of them cannot be activated on instance models due to an NPE:
After some investigation, I found the following problems that might lead to the root cause:
Note: this is a very serious problem as currently 0.7.0 is entirely unusable with such patterns.