Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Test
memberRef
and inheritance
in DependencySpecification.
Flip `memberRefAndInheritanceDeps` flag to true which allows us to test `memberRef` and `inheritance` relations instead of `direct` and `publicInherited` as it was previously done. There a few changes to extracted dependencies from public members: * F doesn't depend on C by inheritance anymore. The dependency on C was coming from self type. This shows that dependencies from self types are not considered to be dependencies introduces by inheritance anymore. * G depends on B by member reference now. This dependency is introduced by applying type constructor `G.T` and expanding the result of the application. * H doesn't depend on D by inheritance anymore. That dependency was introduced through B which inherits from D. This shows that only parents (and not all base classes) are included in `inheritance` relation. NOTE: The second bullet highlights a bug in the old dependency tracking logic. The dependency on B was recorded in `publicInherited` but not in `direct` relation. This breaks the contract which says that `publicInherited` is a subset of `direct` relation. This a change to dependencies extracted from non-public members: * C depends on A by inheritance and D depends on B by inheritance now; both changes are of the same kind: dependencies introduced by inheritance are tracked for non-public members now. This is necessary for name hashing correctness algorithm
- Loading branch information