Dataflow: Sync.

This commit is contained in:
Anders Schack-Mulligen
2021-12-10 10:46:21 +01:00
parent 32cb8f362b
commit 464b9c3991
31 changed files with 27239 additions and 14768 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -3,6 +3,25 @@ private import DataFlowImplSpecific::Public
import Cached
module DataFlowImplCommonPublic {
/** A state value to track during data flow. */
abstract class FlowState extends string {
bindingset[this]
FlowState() { any() }
}
/**
* The default state, which is used when the state is unspecified for a source
* or a sink.
*/
class FlowStateEmpty extends FlowState {
FlowStateEmpty() { this = "" }
}
// Dummy value to avoid misoptimizations when FlowState has size 1.
private class FlowStateDummy extends FlowState {
FlowStateDummy() { this = "dummy" }
}
private newtype TFlowFeature =
TFeatureHasSourceCallContext() or
TFeatureHasSinkCallContext() or