- [x] Introduce the symbolic value `LocalityContract` for representing the locality required by a first-order function. - [x] Introduce the symbolic value `LocalityRequirement` representing the locality required for a function argument. - [x] Introduce `TypeLocalityRequirementResolver` to replace `DeclarationLocalityResolver.resolveRequired*`. - [x] Introduce `ExpressionLocalityRequirementResolver` for resolving the locality requirement of the left-hand side of an assignment. - [x] Introduce an `ImmediateLocalityContractResolver` to resolve the locality contract directly from a function object. - [x] Introduce a `LocalityContractAnalyzer` to resolve the locality contracts in a CFG. - [x] Introduce checkers for the conformance of locality contracts.
LocalityContractfor representing the locality required by a first-order function.LocalityRequirementrepresenting the locality required for a function argument.TypeLocalityRequirementResolverto replaceDeclarationLocalityResolver.resolveRequired*.ExpressionLocalityRequirementResolverfor resolving the locality requirement of the left-hand side of an assignment.ImmediateLocalityContractResolverto resolve the locality contract directly from a function object.LocalityContractAnalyzerto resolve the locality contracts in a CFG.