mirror of
https://github.com/github/codeql.git
synced 2025-12-21 03:06:31 +01:00
C++: Implement ContentApprox
This commit is contained in:
@@ -551,6 +551,13 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves
|
|||||||
*/
|
*/
|
||||||
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
||||||
|
|
||||||
|
/** An approximated `Content`. */
|
||||||
|
class ContentApprox = Unit;
|
||||||
|
|
||||||
|
/** Gets an approximated value for content `c`. */
|
||||||
|
pragma[inline]
|
||||||
|
ContentApprox getContentApprox(Content c) { any() }
|
||||||
|
|
||||||
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
||||||
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
||||||
// The rules for whether an IR argument gets a post-update node are too
|
// The rules for whether an IR argument gets a post-update node are too
|
||||||
|
|||||||
@@ -296,6 +296,13 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves
|
|||||||
*/
|
*/
|
||||||
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
||||||
|
|
||||||
|
/** An approximated `Content`. */
|
||||||
|
class ContentApprox = Unit;
|
||||||
|
|
||||||
|
/** Gets an approximated value for content `c`. */
|
||||||
|
pragma[inline]
|
||||||
|
ContentApprox getContentApprox(Content c) { any() }
|
||||||
|
|
||||||
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
||||||
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
||||||
// Is the null pointer (or something that's not really a pointer)
|
// Is the null pointer (or something that's not really a pointer)
|
||||||
|
|||||||
@@ -400,6 +400,13 @@ predicate additionalLambdaFlowStep(Node nodeFrom, Node nodeTo, boolean preserves
|
|||||||
*/
|
*/
|
||||||
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
predicate allowParameterReturnInSelf(ParameterNode p) { none() }
|
||||||
|
|
||||||
|
/** An approximated `Content`. */
|
||||||
|
class ContentApprox = Unit;
|
||||||
|
|
||||||
|
/** Gets an approximated value for content `c`. */
|
||||||
|
pragma[inline]
|
||||||
|
ContentApprox getContentApprox(Content c) { any() }
|
||||||
|
|
||||||
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
private class MyConsistencyConfiguration extends Consistency::ConsistencyConfiguration {
|
||||||
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
override predicate argHasPostUpdateExclude(ArgumentNode n) {
|
||||||
// The rules for whether an IR argument gets a post-update node are too
|
// The rules for whether an IR argument gets a post-update node are too
|
||||||
|
|||||||
Reference in New Issue
Block a user