|
2253 | 2253 | % information about the direction of that relationship. |
2254 | 2254 | :- table reasonClassRelatedMethod/2 as incremental. |
2255 | 2255 | :- table reasonClassRelatedMethod_A/2 as incremental. |
2256 | | -%:- table reasonClassRelatedMethod_B/2 as incremental. |
| 2256 | +:- table reasonClassRelatedMethod_B/2 as incremental. |
2257 | 2257 | :- table reasonClassRelatedMethod_C/2 as incremental. |
2258 | 2258 |
|
2259 | 2259 | reasonClassRelatedMethod(Class, Method) :- |
2260 | 2260 | reasonClassRelatedMethod_A(Class, Method); |
2261 | 2261 | % _B is now a trigger rule |
2262 | | - %reasonClassRelatedMethod_B(Class, Method); |
| 2262 | + % Re-enabled (temporarily) for negation branch |
| 2263 | + reasonClassRelatedMethod_B(Class, Method); |
2263 | 2264 | reasonClassRelatedMethod_C(Class, Method). |
2264 | 2265 |
|
2265 | 2266 | % ClassCallsMethod => ClassRelatedMethod |
|
2270 | 2271 | thisPtrUsage(Function, ThisPtr, Method) :- |
2271 | 2272 | thisPtrUsage(_, Function, ThisPtr, Method). |
2272 | 2273 |
|
| 2274 | +reasonClassRelatedMethod_B(Class1, Method2) :- |
| 2275 | + reasonClassRelatedMethod_B(Class1, _, _, Method2). |
| 2276 | + |
2273 | 2277 | % Because two methods are called on the same this-pointer in the same function. This rule is |
2274 | 2278 | % NOT direction safe, because it simply observes two methods being called on the same object |
2275 | 2279 | % pointer, and does not account for inheritance relationships. |
|
2695 | 2699 | % inverse rule under reasonNOTMergeClasses. |
2696 | 2700 | % PAPER: Merging-4 |
2697 | 2701 | reasonMergeClasses_E(Class1, Class2) :- |
| 2702 | + fail, |
2698 | 2703 | factDerivedClass(DerivedClass, Class1, ObjectOffset), |
2699 | 2704 | factDerivedClass(DerivedClass, Class2, ObjectOffset), |
2700 | 2705 | iso_dif(Class1, Class2), |
|
0 commit comments