# Inference of nullability annotations

load("@rules_proto//proto:defs.bzl", "proto_library")

package(default_applicable_licenses = ["//:license"])

cc_library(
    name = "collect_evidence",
    srcs = ["collect_evidence.cc"],
    hdrs = ["collect_evidence.h"],
    deps = [
        ":inferable",
        ":inference_cc_proto",
        ":slot_fingerprint",
        "//nullability:pointer_nullability",
        "//nullability:pointer_nullability_analysis",
        "//nullability:pointer_nullability_lattice",
        "//nullability:type_nullability",
        "@absl//absl/log:check",
        "@llvm-project//clang:analysis",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//clang:index",
        "@llvm-project//llvm:Support",
    ],
)

cc_test(
    name = "collect_evidence_test",
    srcs = ["collect_evidence_test.cc"],
    deps = [
        ":collect_evidence",
        ":inference_cc_proto",
        ":slot_fingerprint",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
        "@llvm-project//clang:basic",
        "@llvm-project//clang:testing",
        "@llvm-project//clang/unittests:dataflow_testing_support",
        "@llvm-project//llvm:Support",
        "@llvm-project//third-party/unittest:gmock",
        "@llvm-project//third-party/unittest:gtest",
        "@llvm-project//third-party/unittest:gtest_main",
    ],
)

cc_library(
    name = "merge",
    srcs = ["merge.cc"],
    hdrs = ["merge.h"],
    deps = [
        ":inference_cc_proto",
        "@absl//absl/log:check",
        "@llvm-project//llvm:Support",
    ],
)

cc_test(
    name = "merge_test",
    srcs = ["merge_test.cc"],
    deps = [
        ":inference_cc_proto",
        ":merge",
        "//nullability:proto_matchers",
        "//third_party/protobuf",
        "@absl//absl/log:check",
        "@llvm-project//llvm:Support",
        "@llvm-project//third-party/unittest:gmock",
        "@llvm-project//third-party/unittest:gtest",
        "@llvm-project//third-party/unittest:gtest_main",
    ],
)

cc_library(
    name = "inferable",
    srcs = ["inferable.cc"],
    hdrs = ["inferable.h"],
    deps = [
        "//nullability:type_nullability",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
    ],
)

cc_test(
    name = "inferable_test",
    srcs = ["inferable_test.cc"],
    deps = [
        ":inferable",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//clang:testing",
        "@llvm-project//llvm:Support",
        "@llvm-project//third-party/unittest:gtest",
        "@llvm-project//third-party/unittest:gtest_main",
    ],
)

cc_library(
    name = "infer_tu",
    srcs = ["infer_tu.cc"],
    hdrs = ["infer_tu.h"],
    deps = [
        ":collect_evidence",
        ":inference_cc_proto",
        ":merge",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//llvm:Support",
    ],
)

cc_library(
    name = "slot_fingerprint",
    srcs = ["slot_fingerprint.cc"],
    hdrs = ["slot_fingerprint.h"],
    deps = ["@llvm-project//llvm:Support"],
)

cc_test(
    name = "slot_fingerprint_test",
    srcs = ["slot_fingerprint_test.cc"],
    deps = [
        ":slot_fingerprint",
        "@llvm-project//third-party/unittest:gtest",
        "@llvm-project//third-party/unittest:gtest_main",
    ],
)

cc_test(
    name = "infer_tu_test",
    srcs = ["infer_tu_test.cc"],
    deps = [
        ":collect_evidence",
        ":infer_tu",
        ":inference_cc_proto",
        "//nullability:proto_matchers",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:ast_matchers",
        "@llvm-project//clang:basic",
        "@llvm-project//clang:index",
        "@llvm-project//clang:testing",
        "@llvm-project//llvm:Support",
        "@llvm-project//third-party/unittest:gmock",
        "@llvm-project//third-party/unittest:gtest",
        "@llvm-project//third-party/unittest:gtest_main",
    ],
)

cc_binary(
    name = "infer_tu_main",
    srcs = ["infer_tu_main.cc"],
    deps = [
        ":infer_tu",
        ":inference_cc_proto",
        "@absl//absl/log:check",
        "@llvm-project//clang:ast",
        "@llvm-project//clang:basic",
        "@llvm-project//clang:frontend",
        "@llvm-project//clang:index",
        "@llvm-project//clang:tooling",
        "@llvm-project//llvm:Support",
    ],
)

proto_library(
    name = "inference_proto",
    srcs = ["inference.proto"],
)

cc_proto_library(
    name = "inference_cc_proto",
    deps = [":inference_proto"],
)
