mirror of
https://github.com/github/codeql.git
synced 2026-05-14 03:09:26 +02:00
Merge pull request #10577 from hvitved/dataflow/get-a-read-content-fan-in
Data flow: Fix bad join-order when getAReadContent has large fan-in
This commit is contained in:
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -558,13 +558,16 @@ private predicate expectsContentEx(NodeEx n, Content c) {
|
|||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
private predicate notExpectsContent(NodeEx n) { not expectsContentCached(n.asNode(), _) }
|
||||||
|
|
||||||
|
pragma[nomagic]
|
||||||
|
private predicate hasReadStep(Content c, Configuration config) { read(_, c, _, config) }
|
||||||
|
|
||||||
pragma[nomagic]
|
pragma[nomagic]
|
||||||
private predicate store(
|
private predicate store(
|
||||||
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
NodeEx node1, TypedContent tc, NodeEx node2, DataFlowType contentType, Configuration config
|
||||||
) {
|
) {
|
||||||
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
store(pragma[only_bind_into](node1.asNode()), tc, pragma[only_bind_into](node2.asNode()),
|
||||||
contentType) and
|
contentType) and
|
||||||
read(_, tc.getContent(), _, config) and
|
hasReadStep(tc.getContent(), config) and
|
||||||
stepFilter(node1, node2, config)
|
stepFilter(node1, node2, config)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user