load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")

package(default_visibility = ["//visibility:public"])

cc_library(
    name = "encoders",
    srcs = ["encoders.cc"],
    hdrs = ["encoders.h"],
    deps = [
        "//checker:type_checker_builder",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//compiler",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "encoders_test",
    srcs = ["encoders_test.cc"],
    deps = [
        ":encoders",
        "//checker:standard_library",
        "//checker:validation_result",
        "//compiler",
        "//compiler:compiler_factory",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//runtime",
        "//runtime:activation",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "proto_ext",
    srcs = ["proto_ext.cc"],
    hdrs = ["proto_ext.h"],
    deps = [
        "//common:expr",
        "//compiler",
        "//internal:status_macros",
        "//parser:macro",
        "//parser:macro_expr_factory",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:parser_interface",
        "@com_google_absl//absl/functional:overload",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_absl//absl/types:variant",
    ],
)

cc_library(
    name = "math_ext",
    srcs = ["math_ext.cc"],
    hdrs = ["math_ext.h"],
    deps = [
        ":math_ext_decls",
        "//common:casting",
        "//common:value",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_number",
        "//eval/public:cel_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "math_ext_macros",
    srcs = ["math_ext_macros.cc"],
    hdrs = ["math_ext_macros.h"],
    deps = [
        "//common:ast",
        "//common:constant",
        "//parser:macro",
        "//parser:macro_expr_factory",
        "//parser:macro_registry",
        "//parser:options",
        "@com_google_absl//absl/functional:overload",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_absl//absl/types:variant",
    ],
)

cc_library(
    name = "math_ext_decls",
    srcs = ["math_ext_decls.cc"],
    hdrs = ["math_ext_decls.h"],
    deps = [
        ":math_ext_macros",
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:type",
        "//common:type_kind",
        "//compiler",
        "//internal:status_macros",
        "//parser:parser_interface",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
    ],
)

cc_test(
    name = "math_ext_test",
    srcs = ["math_ext_test.cc"],
    deps = [
        ":math_ext",
        ":math_ext_decls",
        ":math_ext_macros",
        "//checker:standard_library",
        "//checker:type_check_issue",
        "//checker:validation_result",
        "//common:decl",
        "//common:function_descriptor",
        "//common:type",
        "//compiler",
        "//compiler:compiler_factory",
        "//compiler:standard_library",
        "//eval/public:activation",
        "//eval/public:builtin_func_registrar",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_function",
        "//eval/public:cel_options",
        "//eval/public:cel_value",
        "//eval/public/containers:container_backed_list_impl",
        "//eval/public/testing:matchers",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//parser",
        "//runtime:activation",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/algorithm:container",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

# New users should use ":regex_ext" instead.
cc_library(
    name = "regex_functions",
    srcs = ["regex_functions.cc"],
    hdrs = ["regex_functions.h"],
    deps = [
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:re2_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/functional:bind_front",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_protobuf//:protobuf",
        "@com_googlesource_code_re2//:re2",
    ],
)

cc_library(
    name = "bindings_ext",
    srcs = ["bindings_ext.cc"],
    hdrs = ["bindings_ext.h"],
    deps = [
        "//common:ast",
        "//compiler",
        "//internal:status_macros",
        "//parser:macro",
        "//parser:macro_expr_factory",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:parser_interface",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
    ],
)

cc_test(
    name = "regex_functions_test",
    srcs = [
        "regex_functions_test.cc",
    ],
    deps = [
        ":regex_functions",
        "//checker:standard_library",
        "//checker:validation_result",
        "//common:value",
        "//common:value_testing",
        "//compiler",
        "//compiler:compiler_factory",
        "//extensions/protobuf:runtime_adapter",
        "//internal:status_macros",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//parser",
        "//runtime",
        "//runtime:activation",
        "//runtime:reference_resolver",
        "//runtime:runtime_builder",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/log:absl_log",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/status:statusor",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "bindings_ext_test",
    srcs = ["bindings_ext_test.cc"],
    deps = [
        ":bindings_ext",
        "//base:attributes",
        "//eval/public:activation",
        "//eval/public:builtin_func_registrar",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_function",
        "//eval/public:cel_function_adapter",
        "//eval/public:cel_options",
        "//eval/public:cel_value",
        "//eval/public/structs:cel_proto_wrapper",
        "//eval/public/testing:matchers",
        "//internal:testing",
        "//parser",
        "//parser:macro",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_cel_spec//proto/cel/expr/conformance/proto2:test_all_types_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "bindings_ext_benchmark_test",
    srcs = ["bindings_ext_benchmark_test.cc"],
    tags = ["benchmark"],
    deps = [
        ":bindings_ext",
        "//eval/public:activation",
        "//eval/public:builtin_func_registrar",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_options",
        "//eval/public:cel_value",
        "//eval/public/testing:matchers",
        "//internal:benchmark",
        "//internal:testing",
        "//parser",
        "//parser:macro",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/log:absl_check",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "select_optimization",
    srcs = ["select_optimization.cc"],
    hdrs = ["select_optimization.h"],
    deps = [
        "//base:attributes",
        "//base:builtins",
        "//common:ast",
        "//common:ast_rewrite",
        "//common:casting",
        "//common:constant",
        "//common:expr",
        "//common:function_descriptor",
        "//common:kind",
        "//common:native_type",
        "//common:type",
        "//common:value",
        "//eval/compiler:flat_expr_builder",
        "//eval/compiler:flat_expr_builder_extensions",
        "//eval/eval:attribute_trail",
        "//eval/eval:direct_expression_step",
        "//eval/eval:evaluator_core",
        "//eval/eval:expression_step_base",
        "//internal:casts",
        "//internal:number",
        "//internal:status_macros",
        "//runtime:runtime_builder",
        "//runtime/internal:errors",
        "//runtime/internal:runtime_friend_access",
        "//runtime/internal:runtime_impl",
        "@com_google_absl//absl/algorithm:container",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/functional:overload",
        "@com_google_absl//absl/log:absl_check",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_absl//absl/types:variant",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "select_optimization_test",
    srcs = ["select_optimization_test.cc"],
    deps = [
        ":select_optimization",
        "//base:ast",
        "//base:attributes",
        "//base:builtins",
        "//checker:type_checker_builder",
        "//checker:validation_result",
        "//common:ast",
        "//common:decl",
        "//common:decl_proto",
        "//common:expr",
        "//common:kind",
        "//common:memory",
        "//common:value",
        "//compiler",
        "//compiler:compiler_factory",
        "//compiler:optional",
        "//compiler:standard_library",
        "//eval/compiler:flat_expr_builder",
        "//eval/compiler:flat_expr_builder_extensions",
        "//eval/compiler:resolver",
        "//eval/eval:evaluator_core",
        "//eval/internal:interop",
        "//eval/public:cel_type_registry",
        "//eval/public:cel_value",
        "//eval/public/structs:cel_proto_wrapper",
        "//eval/public/structs:legacy_type_adapter",
        "//eval/public/structs:legacy_type_info_apis",
        "//extensions/protobuf:ast_converters",
        "//internal:number",
        "//internal:status_macros",
        "//internal:testing",
        "//parser",
        "//runtime:activation",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_issue",
        "//runtime:runtime_options",
        "//runtime:type_registry",
        "//runtime/internal:issue_collector",
        "//runtime/internal:runtime_env",
        "//runtime/internal:runtime_env_testing",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/log:absl_check",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/time",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_cel_spec//proto/cel/expr:checked_cc_proto",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_cel_spec//proto/cel/expr/conformance/proto2:test_all_types_cc_proto",
        "@com_google_protobuf//:empty_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "lists_functions",
    srcs = ["lists_functions.cc"],
    hdrs = ["lists_functions.h"],
    deps = [
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:expr",
        "//common:operators",
        "//common:type",
        "//common:value",
        "//common:value_kind",
        "//compiler",
        "//internal:status_macros",
        "//parser:macro",
        "//parser:macro_expr_factory",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:parser_interface",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/container:flat_hash_set",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "lists_functions_test",
    srcs = ["lists_functions_test.cc"],
    deps = [
        ":lists_functions",
        "//checker:type_check_issue",
        "//checker:validation_result",
        "//common:source",
        "//common:value",
        "//common:value_testing",
        "//compiler",
        "//compiler:compiler_factory",
        "//compiler:standard_library",
        "//extensions/protobuf:runtime_adapter",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//parser",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:standard_macros",
        "//runtime",
        "//runtime:activation",
        "//runtime:reference_resolver",
        "//runtime:runtime_builder",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/algorithm:container",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "sets_functions",
    srcs = ["sets_functions.cc"],
    hdrs = ["sets_functions.h"],
    deps = [
        "//base:function_adapter",
        "//checker:type_checker_builder",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//compiler",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:status_macros",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "sets_functions_test",
    srcs = ["sets_functions_test.cc"],
    deps = [
        ":sets_functions",
        "//checker:standard_library",
        "//checker:validation_result",
        "//common:ast_proto",
        "//common:minimal_descriptor_pool",
        "//compiler:compiler_factory",
        "//eval/public:activation",
        "//eval/public:builtin_func_registrar",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_function_adapter",
        "//eval/public:cel_options",
        "//eval/public:cel_value",
        "//internal:testing",
        "//runtime:runtime_options",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "sets_functions_benchmark_test",
    srcs = ["sets_functions_benchmark_test.cc"],
    tags = ["benchmark"],
    deps = [
        ":sets_functions",
        "//common:value",
        "//eval/internal:interop",
        "//eval/public:activation",
        "//eval/public:builtin_func_registrar",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_options",
        "//eval/public:cel_value",
        "//eval/public/containers:container_backed_list_impl",
        "//internal:benchmark",
        "//internal:status_macros",
        "//internal:testing",
        "//parser",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "strings",
    srcs = ["strings.cc"],
    hdrs = ["strings.h"],
    deps = [
        ":formatting",
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//compiler",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:cord",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "strings_test",
    srcs = ["strings_test.cc"],
    deps = [
        ":strings",
        "//checker:standard_library",
        "//checker:type_check_issue",
        "//checker:type_checker_builder",
        "//checker:validation_result",
        "//common:ast",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//compiler",
        "//compiler:compiler_factory",
        "//compiler:standard_library",
        "//extensions/protobuf:runtime_adapter",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//parser",
        "//parser:options",
        "//runtime",
        "//runtime:activation",
        "//runtime:runtime_builder",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "//testutil:baseline_tests",
        "@com_google_absl//absl/algorithm:container",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "comprehensions_v2_functions",
    srcs = ["comprehensions_v2_functions.cc"],
    hdrs = ["comprehensions_v2_functions.h"],
    deps = [
        "//common:value",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "comprehensions_v2_macros",
    srcs = ["comprehensions_v2_macros.cc"],
    hdrs = ["comprehensions_v2_macros.h"],
    deps = [
        "//common:expr",
        "//common:operators",
        "//compiler",
        "//internal:status_macros",
        "//parser:macro",
        "//parser:macro_expr_factory",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:parser_interface",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/log:absl_check",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/types:optional",
        "@com_google_absl//absl/types:span",
    ],
)

cc_library(
    name = "comprehensions_v2",
    srcs = ["comprehensions_v2.cc"],
    hdrs = ["comprehensions_v2.h"],
    deps = [
        ":comprehensions_v2_functions",
        ":comprehensions_v2_macros",
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:type",
        "//compiler",
        "//internal:status_macros",
        "//parser:macro_registry",
        "//parser:options",
        "//parser:parser_interface",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/status",
    ],
)

cc_test(
    name = "comprehensions_v2_test",
    srcs = ["comprehensions_v2_test.cc"],
    deps = [
        ":bindings_ext",
        ":comprehensions_v2",
        ":comprehensions_v2_functions",
        ":strings",
        "//checker:standard_library",
        "//checker:validation_result",
        "//common:value",
        "//common:value_testing",
        "//compiler:compiler_factory",
        "//compiler:optional",
        "//internal:status_macros",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//runtime",
        "//runtime:activation",
        "//runtime:optional_types",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/status:statusor",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "formatting",
    srcs = ["formatting.cc"],
    hdrs = ["formatting.h"],
    deps = [
        "//common:value",
        "//common:value_kind",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_options",
        "@com_google_absl//absl/base:core_headers",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/container:btree",
        "@com_google_absl//absl/memory",
        "@com_google_absl//absl/numeric:bits",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/time",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_library(
    name = "regex_ext",
    srcs = ["regex_ext.cc"],
    hdrs = ["regex_ext.h"],
    deps = [
        "//checker:type_checker_builder",
        "//checker/internal:builtins_arena",
        "//common:decl",
        "//common:type",
        "//common:value",
        "//compiler",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//internal:casts",
        "//internal:re2_options",
        "//internal:status_macros",
        "//runtime:function_adapter",
        "//runtime:function_registry",
        "//runtime:runtime_builder",
        "//runtime/internal:runtime_friend_access",
        "//runtime/internal:runtime_impl",
        "//validator",
        "//validator:regex_validator",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/base:nullability",
        "@com_google_absl//absl/functional:bind_front",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_protobuf//:protobuf",
        "@com_googlesource_code_re2//:re2",
    ],
)

cc_test(
    name = "regex_ext_test",
    srcs = ["regex_ext_test.cc"],
    deps = [
        ":regex_ext",
        "//checker:standard_library",
        "//checker:validation_result",
        "//common:kind",
        "//common:value",
        "//common:value_testing",
        "//compiler",
        "//compiler:compiler_factory",
        "//eval/public:activation",
        "//eval/public:cel_expr_builder_factory",
        "//eval/public:cel_expression",
        "//eval/public:cel_function_registry",
        "//eval/public:cel_options",
        "//extensions/protobuf:runtime_adapter",
        "//internal:status_macros",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//parser",
        "//runtime",
        "//runtime:activation",
        "//runtime:optional_types",
        "//runtime:reference_resolver",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "//validator",
        "@com_google_absl//absl/status",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/status:statusor",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_protobuf//:protobuf",
    ],
)

cc_test(
    name = "formatting_test",
    srcs = ["formatting_test.cc"],
    deps = [
        ":formatting",
        "//common:value",
        "//extensions/protobuf:runtime_adapter",
        "//internal:parse_text_proto",
        "//internal:testing",
        "//internal:testing_descriptor_pool",
        "//internal:testing_message_factory",
        "//parser",
        "//parser:options",
        "//runtime",
        "//runtime:activation",
        "//runtime:runtime_builder",
        "//runtime:runtime_options",
        "//runtime:standard_runtime_builder_factory",
        "@com_google_absl//absl/base:no_destructor",
        "@com_google_absl//absl/container:flat_hash_map",
        "@com_google_absl//absl/status:status_matchers",
        "@com_google_absl//absl/strings",
        "@com_google_absl//absl/strings:str_format",
        "@com_google_absl//absl/strings:string_view",
        "@com_google_absl//absl/time",
        "@com_google_cel_spec//proto/cel/expr:syntax_cc_proto",
        "@com_google_cel_spec//proto/cel/expr/conformance/proto3:test_all_types_cc_proto",
        "@com_google_protobuf//:protobuf",
    ],
)
