blob: 56e45b99dd4957969608d43eb2746aea26dbf6ea [file] [log] [blame]
Googler6c3de122022-03-28 11:40:41 +00001"""Generates Rust bindings from C++ headers."""
2
3load(
4 "//rs_bindings_from_cc/bazel_support:deps_for_bindings.bzl",
5 "deps_for_bindings",
6)
7load(
8 "//rs_bindings_from_cc/bazel_support:with_cc_toolchain_flags.bzl",
9 "with_cc_toolchain_flags",
10)
11load(
12 "//rs_bindings_from_cc/bazel_support:rust_bindings_from_cc_binary.bzl",
13 "rust_bindings_from_cc_binary",
14)
15load(
Marcel Hlopko9a94fc42022-04-06 23:35:36 -070016 "@rules_rust//rust:defs.bzl",
Googler6c3de122022-03-28 11:40:41 +000017 "rust_library",
18 "rust_test",
19)
20load(
21 "//rs_bindings_from_cc/bazel_support:toolchain_headers.bzl",
22 "bindings_for_toolchain_headers",
23)
24
25licenses(["notice"])
26
27with_cc_toolchain_flags(
28 name = "test_wrapper",
29 binary = ":rs_bindings_from_cc",
30 extra_args = [
31 "--rs_out=/tmp/rs_api.rs",
32 "--cc_out=/tmp/rs_api_impl.cc",
33 "--ir_out=/tmp/ir.json",
34 ],
35)
36
37rust_bindings_from_cc_binary(
38 name = "rs_bindings_from_cc",
39 binary = ":rs_bindings_from_cc_impl",
Googler75c7ad02022-05-23 13:27:49 -070040 visibility = ["//:__subpackages__"],
Googler6c3de122022-03-28 11:40:41 +000041)
42
43deps_for_bindings(
44 name = "deps_for_bindings",
45 deps_for_generated_cc_file = [
46 "//rs_bindings_from_cc/support:rs_api_impl_support",
47 ],
48 deps_for_generated_rs_file = [
49 # Required for struct layout assertions added to the generated
50 # Rust code.
Googler75c7ad02022-05-23 13:27:49 -070051 "@crate_index//:memoffset",
Googler6c3de122022-03-28 11:40:41 +000052 "//rs_bindings_from_cc/support:ctor",
Devin Jeanpierre27450132022-04-11 13:52:01 -070053 "//rs_bindings_from_cc/support:forward_declare",
Devin Jeanpierreb368e682022-05-03 02:23:44 -070054 "//rs_bindings_from_cc/support:oops",
Googler6c3de122022-03-28 11:40:41 +000055 # Required for `Copy` trait assertions added to the generated Rust
56 # code.
Googler75c7ad02022-05-23 13:27:49 -070057 "@crate_index//:static_assertions",
Googler6c3de122022-03-28 11:40:41 +000058 ],
Googler75c7ad02022-05-23 13:27:49 -070059 visibility = ["//:__subpackages__"],
Googler6c3de122022-03-28 11:40:41 +000060)
61
62cc_binary(
63 name = "rs_bindings_from_cc_impl",
64 srcs = ["rs_bindings_from_cc.cc"],
65 visibility = ["//visibility:public"],
66 deps = [
67 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -070068 ":cc_ir",
Googler6c3de122022-03-28 11:40:41 +000069 ":cmdline",
Marcel Hlopko3f771a92022-05-09 06:09:59 -070070 ":generate_bindings_and_metadata",
Marco Poletti6669c692022-04-07 14:42:56 -070071 "//common:file_io",
Googler75c7ad02022-05-23 13:27:49 -070072 "//common:rust_allocator_shims",
Marco Polettic61bcc42022-04-08 12:54:30 -070073 "//common:status_macros",
Googler75c7ad02022-05-23 13:27:49 -070074 "@absl//absl/container:flat_hash_map",
75 "@absl//absl/flags:parse",
76 "@absl//absl/status",
77 "@absl//absl/status:statusor",
78 "@absl//absl/strings",
79 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +000080 ],
81)
82
83cc_library(
Marcel Hlopko3f771a92022-05-09 06:09:59 -070084 name = "generate_bindings_and_metadata",
85 srcs = ["generate_bindings_and_metadata.cc"],
86 hdrs = ["generate_bindings_and_metadata.h"],
87 deps = [
Marcel Hlopko2ee23912022-05-09 06:13:55 -070088 ":cc_collect_instantiations",
Marcel Hlopko3f771a92022-05-09 06:09:59 -070089 ":cc_ir",
90 ":cmdline",
91 ":ir_from_cc",
92 ":src_code_gen",
93 "//common:status_macros",
94 ],
95)
96
97cc_test(
98 name = "generate_bindings_and_metadata_test",
99 srcs = ["generate_bindings_and_metadata_test.cc"],
100 deps = [
101 ":cmdline",
102 ":generate_bindings_and_metadata",
Googler75c7ad02022-05-23 13:27:49 -0700103 "//common:rust_allocator_shims",
Marcel Hlopko2ee23912022-05-09 06:13:55 -0700104 "//common:test_utils",
Marcel Hlopko3f771a92022-05-09 06:09:59 -0700105 "//testing/base/public:gunit_main",
Googler75c7ad02022-05-23 13:27:49 -0700106 "@absl//absl/strings",
Marcel Hlopko3f771a92022-05-09 06:09:59 -0700107 ],
108)
109
110cc_library(
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700111 name = "ast_util",
112 srcs = ["ast_util.cc"],
113 hdrs = ["ast_util.h"],
Googler75c7ad02022-05-23 13:27:49 -0700114 visibility = ["//:__subpackages__"],
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700115 deps = [
116 "//common:check",
Googler75c7ad02022-05-23 13:27:49 -0700117 "@llvm-project//clang:ast",
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700118 ],
119)
120
121cc_library(
Googler6c3de122022-03-28 11:40:41 +0000122 name = "bazel_types",
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700123 srcs = ["bazel_types.cc"],
Googler6c3de122022-03-28 11:40:41 +0000124 hdrs = ["bazel_types.h"],
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700125 deps = [
126 "//common:string_type",
Googler75c7ad02022-05-23 13:27:49 -0700127 "@absl//absl/strings",
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700128 ],
Googler6c3de122022-03-28 11:40:41 +0000129)
130
131cc_library(
132 name = "cmdline",
133 srcs = ["cmdline.cc"],
134 hdrs = ["cmdline.h"],
135 deps = [
136 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -0700137 ":cc_ir",
Marco Polettic61bcc42022-04-08 12:54:30 -0700138 "//common:status_macros",
Googler75c7ad02022-05-23 13:27:49 -0700139 "@absl//absl/container:flat_hash_map",
140 "@absl//absl/flags:flag",
141 "@absl//absl/status:statusor",
142 "@absl//absl/strings",
143 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +0000144 ],
145)
146
147cc_test(
148 name = "cmdline_test",
149 srcs = ["cmdline_test.cc"],
150 deps = [
151 ":bazel_types",
152 ":cmdline",
153 "//testing/base/public:gunit_main",
154 ],
155)
156
157cc_library(
Michael Forsterb3503e02022-04-25 00:24:14 -0700158 name = "decl_importer",
159 hdrs = ["decl_importer.h"],
Googler75c7ad02022-05-23 13:27:49 -0700160 visibility = ["//:__subpackages__"],
Michael Forsterb3503e02022-04-25 00:24:14 -0700161 deps = [
Googler0611ea72022-05-04 07:03:07 -0700162 "cc_ir",
Michael Forsterb3503e02022-04-25 00:24:14 -0700163 ":bazel_types",
164 "//lifetime_annotations",
Googler75c7ad02022-05-23 13:27:49 -0700165 "@absl//absl/container:flat_hash_map",
166 "@absl//absl/status:statusor",
167 "@llvm-project//clang:ast",
Michael Forsterb3503e02022-04-25 00:24:14 -0700168 ],
169)
170
171cc_library(
Googler6c3de122022-03-28 11:40:41 +0000172 name = "frontend_action",
173 srcs = ["frontend_action.cc"],
174 hdrs = ["frontend_action.h"],
175 deps = [
176 ":ast_consumer",
Michael Forster974bf152022-05-12 00:40:59 -0700177 ":decl_importer",
Googler75c7ad02022-05-23 13:27:49 -0700178 "@llvm-project//clang:ast",
179 "@llvm-project//clang:frontend",
Googler6c3de122022-03-28 11:40:41 +0000180 ],
181)
182
183cc_library(
184 name = "ast_consumer",
185 srcs = ["ast_consumer.cc"],
186 hdrs = ["ast_consumer.h"],
187 deps = [
Michael Forster974bf152022-05-12 00:40:59 -0700188 ":decl_importer",
Googler6c3de122022-03-28 11:40:41 +0000189 ":importer",
Marco Polettic61bcc42022-04-08 12:54:30 -0700190 "//common:check",
Googler75c7ad02022-05-23 13:27:49 -0700191 "@llvm-project//clang:ast",
192 "@llvm-project//clang:frontend",
Googler6c3de122022-03-28 11:40:41 +0000193 ],
194)
195
196cc_library(
197 name = "importer",
198 srcs = ["importer.cc"],
199 hdrs = ["importer.h"],
200 deps = [
201 ":ast_convert",
202 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -0700203 ":cc_ir",
Michael Forsterb3503e02022-04-25 00:24:14 -0700204 ":decl_importer",
Marco Polettic61bcc42022-04-08 12:54:30 -0700205 "//common:check",
206 "//common:status_macros",
Googler6c3de122022-03-28 11:40:41 +0000207 "//lifetime_annotations:type_lifetimes",
Lukasz Anforowiczb1ff2e52022-05-16 10:54:23 -0700208 "//rs_bindings_from_cc:ast_util",
Michael Forsterb3503e02022-04-25 00:24:14 -0700209 "//rs_bindings_from_cc/importers:class_template",
Michael Forsterc0bc9262022-04-25 00:30:26 -0700210 "//rs_bindings_from_cc/importers:cxx_record",
Michael Forster4fa849d2022-04-25 00:32:59 -0700211 "//rs_bindings_from_cc/importers:enum",
Michael Forster7e4244a2022-04-25 00:39:01 -0700212 "//rs_bindings_from_cc/importers:function",
Michael Forster350d5312022-04-25 00:36:31 -0700213 "//rs_bindings_from_cc/importers:function_template",
Michael Forster284fb5a2022-04-25 00:41:14 -0700214 "//rs_bindings_from_cc/importers:namespace",
Michael Forsterc60df1e2022-04-25 00:55:44 -0700215 "//rs_bindings_from_cc/importers:typedef_name",
Googler75c7ad02022-05-23 13:27:49 -0700216 "@absl//absl/container:flat_hash_map",
217 "@absl//absl/container:flat_hash_set",
218 "@absl//absl/status",
219 "@absl//absl/status:statusor",
220 "@absl//absl/strings",
221 "@absl//absl/strings:cord",
222 "@llvm-project//clang:ast",
223 "@llvm-project//clang:basic",
224 "@llvm-project//clang:sema",
225 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +0000226 ],
227)
228
229cc_test(
230 name = "importer_test",
231 srcs = ["importer_test.cc"],
232 deps = [
233 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -0700234 ":cc_ir",
Googler6c3de122022-03-28 11:40:41 +0000235 ":ir_from_cc",
236 "//testing/base/public:gunit_main",
Googler75c7ad02022-05-23 13:27:49 -0700237 "@absl//absl/status",
238 "@absl//absl/status:statusor",
239 "@absl//absl/strings",
240 "@absl//absl/types:span",
241 "@llvm-project//clang:ast",
Googler6c3de122022-03-28 11:40:41 +0000242 ],
243)
244
245cc_library(
Googler0611ea72022-05-04 07:03:07 -0700246 name = "cc_ir",
Googler6c3de122022-03-28 11:40:41 +0000247 srcs = ["ir.cc"],
248 hdrs = ["ir.h"],
Googler6c3de122022-03-28 11:40:41 +0000249 deps = [
250 ":bazel_types",
Marco Polettic61bcc42022-04-08 12:54:30 -0700251 "//common:check",
252 "//common:strong_int",
Googler75c7ad02022-05-23 13:27:49 -0700253 "@absl//absl/container:flat_hash_map",
254 "@absl//absl/status:statusor",
255 "@absl//absl/strings",
256 "@llvm-project//clang:ast",
257 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +0000258 ],
259)
260
261rust_library(
Googler0611ea72022-05-04 07:03:07 -0700262 name = "ir",
Googler6c3de122022-03-28 11:40:41 +0000263 srcs = ["ir.rs"],
Googler6c3de122022-03-28 11:40:41 +0000264 deps = [
Googler75c7ad02022-05-23 13:27:49 -0700265 "@crate_index//:anyhow",
266 "@crate_index//:itertools",
267 "@crate_index//:proc-macro2",
268 "@crate_index//:quote",
269 "@crate_index//:serde",
270 "@crate_index//:serde_json",
Googler6c3de122022-03-28 11:40:41 +0000271 ],
272)
273
274rust_test(
275 name = "rs_ir_test",
Googler0611ea72022-05-04 07:03:07 -0700276 crate = ":ir",
Googler6c3de122022-03-28 11:40:41 +0000277)
278
279rust_library(
280 name = "ir_testing",
281 testonly = 1,
282 srcs = ["ir_testing.rs"],
283 deps = [
Googler0611ea72022-05-04 07:03:07 -0700284 ":ir",
Googler6c3de122022-03-28 11:40:41 +0000285 ":json_from_cc",
Googler0611ea72022-05-04 07:03:07 -0700286 "//common:ffi_types",
Googler75c7ad02022-05-23 13:27:49 -0700287 "@crate_index//:anyhow",
288 "@crate_index//:itertools",
Googler6c3de122022-03-28 11:40:41 +0000289 ],
290)
291
292cc_library(
293 name = "ir_from_cc",
294 srcs = ["ir_from_cc.cc"],
295 hdrs = ["ir_from_cc.h"],
296 deps = [
297 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -0700298 ":cc_ir",
Googler6c3de122022-03-28 11:40:41 +0000299 ":frontend_action",
300 ":importer",
Marco Polettic61bcc42022-04-08 12:54:30 -0700301 "//common:check",
Googler75c7ad02022-05-23 13:27:49 -0700302 "@absl//absl/container:flat_hash_map",
303 "@absl//absl/status",
304 "@absl//absl/status:statusor",
305 "@absl//absl/strings",
306 "@absl//absl/types:span",
307 "@llvm-project//clang:basic",
308 "@llvm-project//clang:frontend",
309 "@llvm-project//clang:tooling",
Googler6c3de122022-03-28 11:40:41 +0000310 ],
311)
312
313cc_library(
314 name = "json_from_cc",
315 srcs = ["json_from_cc.cc"],
316 deps = [
317 ":bazel_types",
Googler0611ea72022-05-04 07:03:07 -0700318 ":cc_ir",
Googler6c3de122022-03-28 11:40:41 +0000319 ":ir_from_cc",
Googler0611ea72022-05-04 07:03:07 -0700320 "//common:cc_ffi_types",
Googler75c7ad02022-05-23 13:27:49 -0700321 "@absl//absl/status:statusor",
322 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +0000323 ],
324)
325
326rust_test(
327 name = "ir_from_cc_test",
328 srcs = ["ir_from_cc_test.rs"],
329 deps = [
Googler0611ea72022-05-04 07:03:07 -0700330 ":ir",
Googler6c3de122022-03-28 11:40:41 +0000331 ":ir_testing",
Googler6c3de122022-03-28 11:40:41 +0000332 ":token_stream_matchers",
Googler75c7ad02022-05-23 13:27:49 -0700333 "//common:rust_allocator_shims",
334 "@crate_index//:anyhow",
335 "@crate_index//:itertools",
336 "@crate_index//:quote",
Googler6c3de122022-03-28 11:40:41 +0000337 ],
338)
339
340cc_library(
341 name = "src_code_gen",
342 srcs = ["src_code_gen.cc"],
343 hdrs = ["src_code_gen.h"],
344 deps = [
Googler0611ea72022-05-04 07:03:07 -0700345 ":cc_ir",
Googler6c3de122022-03-28 11:40:41 +0000346 ":src_code_gen_impl", # buildcleaner: keep
Googler0611ea72022-05-04 07:03:07 -0700347 "//common:cc_ffi_types",
Googler75c7ad02022-05-23 13:27:49 -0700348 "@absl//absl/strings",
349 "@llvm-project//clang:format",
350 "@llvm-project//llvm:Support",
Googler6c3de122022-03-28 11:40:41 +0000351 ],
352)
353
354rust_library(
355 name = "src_code_gen_impl",
356 srcs = ["src_code_gen.rs"],
357 deps = [
Googler0611ea72022-05-04 07:03:07 -0700358 ":ir",
359 "//common:ffi_types",
Marcel Hlopko7f14b4c2022-04-13 00:54:45 -0700360 "//common:token_stream_printer",
Googler75c7ad02022-05-23 13:27:49 -0700361 "@crate_index//:anyhow",
362 "@crate_index//:itertools",
363 "@crate_index//:proc-macro2",
364 "@crate_index//:quote",
365 "@crate_index//:serde_json",
366 "@crate_index//:syn",
Googler6c3de122022-03-28 11:40:41 +0000367 ],
368)
369
370rust_test(
371 name = "src_code_gen_impl_test",
372 crate = ":src_code_gen_impl",
373 data = [
Googler6c3de122022-03-28 11:40:41 +0000374 ],
375 deps = [
376 ":ir_testing",
377 ":token_stream_matchers",
Googler75c7ad02022-05-23 13:27:49 -0700378 "//common:rust_allocator_shims",
379 "@crate_index//:static_assertions",
Googler6c3de122022-03-28 11:40:41 +0000380 ],
381)
382
383cc_library(
Googler6c3de122022-03-28 11:40:41 +0000384 name = "ast_convert",
385 srcs = ["ast_convert.cc"],
386 hdrs = ["ast_convert.h"],
Michael Forsterc0bc9262022-04-25 00:30:26 -0700387 visibility = ["//rs_bindings_from_cc:__subpackages__"],
Googler6c3de122022-03-28 11:40:41 +0000388 deps = [
Googler0611ea72022-05-04 07:03:07 -0700389 ":cc_ir",
Marco Polettic61bcc42022-04-08 12:54:30 -0700390 "//common:check",
Googler75c7ad02022-05-23 13:27:49 -0700391 "@absl//absl/functional:function_ref",
392 "@llvm-project//clang:ast",
393 "@llvm-project//clang:basic",
Googler6c3de122022-03-28 11:40:41 +0000394 ],
395)
396
397rust_library(
Googler6c3de122022-03-28 11:40:41 +0000398 name = "token_stream_matchers",
399 srcs = ["token_stream_matchers.rs"],
400 deps = [
Googler0611ea72022-05-04 07:03:07 -0700401 ":ir",
Marcel Hlopko7f14b4c2022-04-13 00:54:45 -0700402 "//common:token_stream_printer",
Googler75c7ad02022-05-23 13:27:49 -0700403 "@crate_index//:anyhow",
404 "@crate_index//:itertools",
405 "@crate_index//:proc-macro2",
406 "@crate_index//:quote",
Googler6c3de122022-03-28 11:40:41 +0000407 ],
408)
409
410rust_test(
411 name = "token_stream_matchers_test",
412 crate = ":token_stream_matchers",
413 data = [
Googler6c3de122022-03-28 11:40:41 +0000414 ],
415 deps = [
416 ":ir_testing",
Googler75c7ad02022-05-23 13:27:49 -0700417 "//common:rust_allocator_shims",
Googler6c3de122022-03-28 11:40:41 +0000418 ],
419)
420
Marcel Hlopko457bdef2022-05-18 06:01:49 -0700421LIBCXX_HEADERS = [
Googler6c3de122022-03-28 11:40:41 +0000422 "cstddef",
423 "cstdlib",
424 "version",
425 "limits",
426 "climits",
427 "cfloat",
428 "cstdint",
429 "new",
430 "typeinfo",
Googler6c3de122022-03-28 11:40:41 +0000431 "exception",
432 "initializer_list",
433 "compare",
434 "csignal",
435 "csetjmp",
436 "cstdarg",
437 "string",
438 "memory",
439 "stdint.h",
440 "stddef.h",
441 "stdlib.h",
442]
443
Marcel Hlopko457bdef2022-05-18 06:01:49 -0700444LIBC_HEADERS = []
445
Googler6c3de122022-03-28 11:40:41 +0000446config_setting(
447 name = "llvm_unstable",
448 values = {
Googler75c7ad02022-05-23 13:27:49 -0700449 "crosstool_top": "//nowhere/llvm:everything",
Googler6c3de122022-03-28 11:40:41 +0000450 },
451)
452
453filegroup(
454 name = "toolchain_headers",
455 srcs = select({
Googler75c7ad02022-05-23 13:27:49 -0700456 ":llvm_unstable": ["//nowhere/llvm:cc-std-headers"],
457 "//conditions:default": ["//nowhere/llvm:cc-std-headers"],
Googler6c3de122022-03-28 11:40:41 +0000458 }) + [
459 "//third_party/grte/v5_x86/release/usr/grte/v5:compile",
460 ],
Googler6c3de122022-03-28 11:40:41 +0000461)
462
463filegroup(
464 name = "builtin_headers",
465 srcs = [
Googler75c7ad02022-05-23 13:27:49 -0700466 "@llvm-project//clang:builtin_headers_filegroup",
467 "@llvm-project//compiler-rt:fuzzer_filegroup",
468 "@llvm-project//compiler-rt:sanitizer_filegroup",
Googler6c3de122022-03-28 11:40:41 +0000469 ],
470 visibility = ["//visibility:public"],
471)
472
473bindings_for_toolchain_headers(
474 name = "cc_std",
475 hdrs = ":toolchain_headers",
Marcel Hlopko457bdef2022-05-18 06:01:49 -0700476 public_libc_hdrs = LIBC_HEADERS,
477 public_libcxx_hdrs = LIBCXX_HEADERS,
Googler6c3de122022-03-28 11:40:41 +0000478 visibility = ["//visibility:public"],
479)
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700480
481cc_library(
482 name = "cc_collect_instantiations",
483 srcs = ["collect_instantiations.cc"],
484 hdrs = ["collect_instantiations.h"],
485 deps = [
486 ":collect_instantiations",
487 "//common:cc_ffi_types",
488 "//common:check",
Googler75c7ad02022-05-23 13:27:49 -0700489 "@absl//absl/status:statusor",
490 "@absl//absl/types:span",
491 "@llvm-project//llvm:Support",
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700492 ],
493)
494
495cc_test(
496 name = "cc_collect_instantiations_test",
497 srcs = ["collect_instantiations_test.cc"],
498 deps = [
499 ":cc_collect_instantiations",
Googler75c7ad02022-05-23 13:27:49 -0700500 "//common:rust_allocator_shims",
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700501 "//common:test_utils",
502 "//testing/base/public:gunit_main",
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700503 ],
504)
505
506rust_library(
507 name = "collect_instantiations",
508 srcs = ["collect_instantiations.rs"],
509 deps = [
510 "//common:ffi_types",
511 "//common:token_stream_printer",
Googler75c7ad02022-05-23 13:27:49 -0700512 "@crate_index//:anyhow",
513 "@crate_index//:proc-macro2",
514 "@crate_index//:serde_json",
515 "@crate_index//:syn",
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700516 ],
517)
518
519rust_test(
520 name = "collect_instantiations_test",
521 args = [
522 # To prevent tests from polluting the environment variables for each other.
523 "--test-threads",
524 "1",
525 ],
526 crate = ":collect_instantiations",
527 deps = [
Googler75c7ad02022-05-23 13:27:49 -0700528 "@crate_index//:quote",
Marcel Hlopkob10e49b2022-05-09 03:57:32 -0700529 ],
530)