mirror of
https://github.com/github/codeql.git
synced 2026-04-25 08:45:14 +02:00
JS: Deprecate DataFlow::BarrierGuardNode
This commit is contained in:
@@ -367,8 +367,7 @@ abstract private class BarrierGuardNodeInternal extends DataFlow::Node { }
|
||||
* classes as precise as possible: if two subclasses of `BarrierGuardNode` overlap, their
|
||||
* implementations of `blocks` will _both_ apply to any configuration that includes either of them.
|
||||
*/
|
||||
abstract class BarrierGuardNode extends BarrierGuardNodeInternal {
|
||||
// TODO: deprecate this class; currently requires too much refactoring
|
||||
abstract deprecated class BarrierGuardNode extends BarrierGuardNodeInternal {
|
||||
/**
|
||||
* Holds if this node blocks expression `e` provided it evaluates to `outcome`.
|
||||
*
|
||||
|
||||
@@ -63,13 +63,21 @@ module MakeLabeledBarrierGuard<LabeledBarrierGuardSig BaseGuard> {
|
||||
}
|
||||
}
|
||||
|
||||
deprecated private signature predicate isBarrierGuardSig(DataFlow::BarrierGuardNode node);
|
||||
/**
|
||||
* Contains deprecated signatures.
|
||||
*
|
||||
* This module is a workaround for the fact that deprecated signatures can't refer to deprecated classes
|
||||
* without getting a deprecation warning
|
||||
*/
|
||||
deprecated private module DeprecatedSigs {
|
||||
signature predicate isBarrierGuardSig(DataFlow::BarrierGuardNode node);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a labeled barrier guard class to a set of nodes to include in an implementation of `isBarrier(node)` and `isBarrier(node, label)`
|
||||
* in a `DataFlow::StateConfigSig` implementation.
|
||||
*/
|
||||
deprecated module MakeLegacyBarrierGuardLabeled<isBarrierGuardSig/1 isBarrierGuard> {
|
||||
deprecated module MakeLegacyBarrierGuardLabeled<DeprecatedSigs::isBarrierGuardSig/1 isBarrierGuard> {
|
||||
final private class FinalNode = DataFlow::Node;
|
||||
|
||||
private class Adapter extends FinalNode instanceof DataFlow::BarrierGuardNode {
|
||||
@@ -100,7 +108,7 @@ deprecated module MakeLegacyBarrierGuardLabeled<isBarrierGuardSig/1 isBarrierGua
|
||||
/**
|
||||
* Converts a barrier guard class to a set of nodes to include in an implementation of `isBarrier(node)` in a `DataFlow::ConfigSig` implementation.
|
||||
*/
|
||||
deprecated module MakeLegacyBarrierGuard<isBarrierGuardSig/1 isBarrierGuard> {
|
||||
deprecated module MakeLegacyBarrierGuard<DeprecatedSigs::isBarrierGuardSig/1 isBarrierGuard> {
|
||||
final private class FinalNode = DataFlow::Node;
|
||||
|
||||
private class Adapter extends FinalNode instanceof DataFlow::BarrierGuardNode {
|
||||
|
||||
@@ -19,17 +19,20 @@ module TestConfig implements DataFlow::ConfigSig {
|
||||
|
||||
module TestFlow = DataFlow::Global<TestConfig>;
|
||||
|
||||
class SimpleBarrierGuardNode extends DataFlow::BarrierGuardNode, DataFlow::InvokeNode {
|
||||
class SimpleBarrierGuardNode extends DataFlow::InvokeNode {
|
||||
SimpleBarrierGuardNode() { this.getCalleeName() = "BARRIER" }
|
||||
|
||||
override predicate blocks(boolean outcome, Expr e) { this.blocksExpr(outcome, e) }
|
||||
|
||||
predicate blocksExpr(boolean outcome, Expr e) {
|
||||
outcome = true and
|
||||
e = this.getArgument(0).asExpr()
|
||||
}
|
||||
}
|
||||
|
||||
deprecated class SimpleBarrierGuardNodeLegacy extends DataFlow::BarrierGuardNode instanceof SimpleBarrierGuardNode
|
||||
{
|
||||
override predicate blocks(boolean outcome, Expr e) { super.blocksExpr(outcome, e) }
|
||||
}
|
||||
|
||||
deprecated class LegacyConfig extends DataFlow::Configuration {
|
||||
LegacyConfig() { this = "LegacyConfig" }
|
||||
|
||||
@@ -38,7 +41,7 @@ deprecated class LegacyConfig extends DataFlow::Configuration {
|
||||
override predicate isSink(DataFlow::Node sink) { TestConfig::isSink(sink) }
|
||||
|
||||
override predicate isBarrierGuard(DataFlow::BarrierGuardNode guard) {
|
||||
guard instanceof SimpleBarrierGuardNode
|
||||
guard instanceof SimpleBarrierGuardNodeLegacy
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,9 @@ class BasicBarrierGuard extends DataFlow::CallNode {
|
||||
}
|
||||
}
|
||||
|
||||
deprecated class BasicBarrierGuardLegacy extends DataFlow::BarrierGuardNode, BasicBarrierGuard {
|
||||
override predicate blocks(boolean outcome, Expr e) { this.blocksExpr(outcome, e) }
|
||||
deprecated class BasicBarrierGuardLegacy extends DataFlow::BarrierGuardNode instanceof BasicBarrierGuard
|
||||
{
|
||||
override predicate blocks(boolean outcome, Expr e) { super.blocksExpr(outcome, e) }
|
||||
}
|
||||
|
||||
deprecated class LegacyConfig extends DataFlow::Configuration {
|
||||
|
||||
Reference in New Issue
Block a user