You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
1.3 KiB

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include <assert.h>
#include <stdlib.h>
void simple_check(int x) { assert(x < 3); }
void simple_assertion_failure() {
int x = 4;
simple_check(x);
}
void no_assertion_failure() {
int x = 2;
simple_check(x);
}
typedef struct {
int value;
} node;
void check_node(node* n) { assert(n->value < 3); }
node* assertion_failure_with_heap() {
node* n = malloc(sizeof(node));
if (n != NULL) {
n->value = 4;
check_node(n);
}
return n;
}
node* no_assertion_failure_with_heap() {
node* n = malloc(sizeof(node));
if (n != NULL) {
n->value = 2;
check_node(n);
}
return n;
}
void __infer_fail(char*);
void my_assert(int x) {
if (!x) {
__infer_fail("ASSERTION_FAILURE");
}
}
void should_not_report_assertion_failure(int x) { my_assert(x); }
void should_report_assertion_failure(int x) {
x = 0;
my_assert(x);
}
int global;
void check_global() { assert(global != 0); }
void skip() {}
void assignment_after_check() {
check_global();
global = 0;
skip();
}
void assignemt_before_check() {
global = 0;
check_global();
}
void failure_on_both_branches(int x) {
if (x > 3) {
simple_check(x);
} else {
simple_check(42);
}
}