load("//cc/toolchains:format.bzl", "format_arg") load("//cc/toolchains:nested_args.bzl", "cc_nested_args") load("//cc/toolchains/impl:variables.bzl", "cc_builtin_variables", "cc_variable", "types") load("//tests/rule_based_toolchain:analysis_test_suite.bzl", "analysis_test_suite") load(":variables_test.bzl", "TARGETS", "TESTS") cc_variable( name = "str", type = types.string, ) cc_variable( name = "optional_list", type = types.option(types.list(types.string)), ) cc_variable( name = "str_list", type = types.list(types.string), ) cc_variable( name = "str_option", type = types.option(types.string), ) cc_variable( name = "struct", actions = ["//tests/rule_based_toolchain/actions:c_compile"], type = types.struct( nested_str = types.string, nested_str_list = types.list(types.string), ), ) cc_variable( name = "struct_list", actions = ["//tests/rule_based_toolchain/actions:c_compile"], type = types.list(types.struct( nested_str = types.string, nested_str_list = types.list(types.string), )), ) cc_variable( name = "struct_list.nested_str_list", type = types.unknown, ) # Dots in the name confuse the test rules. # It would end up generating targets.struct_list.nested_str_list. alias( name = "nested_str_list", actual = ":struct_list.nested_str_list", ) cc_nested_args( name = "simple_str", args = [format_arg("%s", ":str")], ) cc_nested_args( name = "list_not_allowed", args = [format_arg("%s", ":str_list")], ) cc_nested_args( name = "iterate_over_list", args = [format_arg("%s")], iterate_over = ":str_list", ) cc_nested_args( name = "iterate_over_non_list", args = ["--foo"], iterate_over = ":str", ) cc_nested_args( name = "str_not_a_bool", args = ["--foo"], requires_true = ":str", ) cc_nested_args( name = "str_equal", args = ["--foo"], requires_equal = ":str", requires_equal_value = "bar", ) cc_nested_args( name = "inner_iter", args = [format_arg("%s")], iterate_over = ":struct_list.nested_str_list", ) cc_nested_args( name = "outer_iter", iterate_over = ":struct_list", nested = [":inner_iter"], ) cc_nested_args( name = "bad_inner_iter", args = [format_arg("%s", ":struct_list.nested_str_list")], ) cc_nested_args( name = "bad_outer_iter", iterate_over = ":struct_list", nested = [":bad_inner_iter"], ) cc_nested_args( name = "bad_nested_optional", args = [format_arg("%s", ":str_option")], ) cc_nested_args( name = "good_nested_optional", args = [format_arg("%s", ":str_option")], requires_not_none = ":str_option", ) cc_nested_args( name = "optional_list_iter", args = ["--foo"], iterate_over = ":optional_list", ) cc_builtin_variables( name = "variables", srcs = [ ":optional_list", ":str", ":str_list", ":str_option", ":struct", ":struct_list", ], ) analysis_test_suite( name = "test_suite", targets = TARGETS, tests = TESTS, )