BUILD 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. # Part of the Carbon Language project, under the Apache License v2.0 with LLVM
  2. # Exceptions. See /LICENSE for license information.
  3. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. load("@rules_cc//cc:defs.bzl", "cc_library")
  5. load("//testing/fuzzing:rules.bzl", "cc_fuzz_test")
  6. package(default_visibility = ["//visibility:public"])
  7. filegroup(
  8. name = "testdata",
  9. data = glob(["testdata/**/*.carbon"]),
  10. )
  11. cc_library(
  12. name = "context",
  13. srcs = [
  14. "context.cpp",
  15. "convert.cpp",
  16. "decl_name_stack.cpp",
  17. "eval.cpp",
  18. "function.cpp",
  19. "generic.cpp",
  20. "import_ref.cpp",
  21. "inst_block_stack.cpp",
  22. "merge.cpp",
  23. "modifiers.cpp",
  24. "name_component.cpp",
  25. "return.cpp",
  26. "subst.cpp",
  27. ],
  28. hdrs = [
  29. "context.h",
  30. "convert.h",
  31. "decl_introducer_state.h",
  32. "decl_name_stack.h",
  33. "diagnostic_helpers.h",
  34. "eval.h",
  35. "function.h",
  36. "generic.h",
  37. "import_ref.h",
  38. "inst_block_stack.h",
  39. "keyword_modifier_set.h",
  40. "merge.h",
  41. "modifiers.h",
  42. "name_component.h",
  43. "param_and_arg_refs_stack.h",
  44. "pending_block.h",
  45. "return.h",
  46. "subst.h",
  47. ],
  48. deps = [
  49. ":node_stack",
  50. "//common:check",
  51. "//common:vlog",
  52. "//toolchain/base:index_base",
  53. "//toolchain/base:kind_switch",
  54. "//toolchain/check:scope_stack",
  55. "//toolchain/diagnostics:diagnostic_emitter",
  56. "//toolchain/lex:token_kind",
  57. "//toolchain/lex:tokenized_buffer",
  58. "//toolchain/parse:node_kind",
  59. "//toolchain/parse:tree",
  60. "//toolchain/parse:tree_node_diagnostic_converter",
  61. "//toolchain/sem_ir:builtin_kind",
  62. "//toolchain/sem_ir:file",
  63. "//toolchain/sem_ir:ids",
  64. "//toolchain/sem_ir:inst",
  65. "//toolchain/sem_ir:inst_kind",
  66. "@llvm-project//llvm:Support",
  67. ],
  68. )
  69. cc_library(
  70. name = "check",
  71. srcs = [
  72. "check.cpp",
  73. "handle.h",
  74. ] +
  75. # Glob handler files to avoid missing any.
  76. glob([
  77. "handle_*.cpp",
  78. ]),
  79. hdrs = ["check.h"],
  80. deps = [
  81. ":call",
  82. ":context",
  83. ":impl",
  84. ":import",
  85. ":interface",
  86. ":member_access",
  87. ":operator",
  88. ":pointer_dereference",
  89. ":sem_ir_diagnostic_converter",
  90. "//common:check",
  91. "//common:error",
  92. "//common:ostream",
  93. "//common:variant_helpers",
  94. "//common:vlog",
  95. "//toolchain/base:kind_switch",
  96. "//toolchain/base:pretty_stack_trace_function",
  97. "//toolchain/base:value_store",
  98. "//toolchain/diagnostics:diagnostic_emitter",
  99. "//toolchain/lex:token_index",
  100. "//toolchain/lex:token_kind",
  101. "//toolchain/lex:tokenized_buffer",
  102. "//toolchain/parse:node_kind",
  103. "//toolchain/parse:tree",
  104. "//toolchain/parse:tree_node_diagnostic_converter",
  105. "//toolchain/sem_ir:entry_point",
  106. "//toolchain/sem_ir:file",
  107. "//toolchain/sem_ir:ids",
  108. "//toolchain/sem_ir:inst",
  109. "//toolchain/sem_ir:inst_kind",
  110. "@llvm-project//llvm:Support",
  111. ],
  112. )
  113. cc_fuzz_test(
  114. name = "check_fuzzer",
  115. size = "small",
  116. srcs = ["check_fuzzer.cpp"],
  117. corpus = glob(["fuzzer_corpus/*"]),
  118. deps = [
  119. "//common:exe_path",
  120. "//testing/fuzzing:libfuzzer_header",
  121. "//toolchain/driver",
  122. "@llvm-project//llvm:Support",
  123. ],
  124. )
  125. cc_library(
  126. name = "call",
  127. srcs = ["call.cpp"],
  128. hdrs = ["call.h"],
  129. deps = [
  130. ":context",
  131. "//common:check",
  132. "//toolchain/base:kind_switch",
  133. "//toolchain/sem_ir:file",
  134. "//toolchain/sem_ir:ids",
  135. "//toolchain/sem_ir:inst",
  136. "//toolchain/sem_ir:inst_kind",
  137. ],
  138. )
  139. cc_library(
  140. name = "impl",
  141. srcs = ["impl.cpp"],
  142. hdrs = ["impl.h"],
  143. deps = [
  144. ":context",
  145. "//common:check",
  146. "//toolchain/base:kind_switch",
  147. "//toolchain/diagnostics:diagnostic_emitter",
  148. "//toolchain/sem_ir:file",
  149. "//toolchain/sem_ir:ids",
  150. "//toolchain/sem_ir:inst",
  151. "//toolchain/sem_ir:inst_kind",
  152. ],
  153. )
  154. cc_library(
  155. name = "import",
  156. srcs = ["import.cpp"],
  157. hdrs = ["import.h"],
  158. deps = [
  159. ":context",
  160. "//common:check",
  161. "//toolchain/base:kind_switch",
  162. "//toolchain/parse:node_kind",
  163. "//toolchain/sem_ir:file",
  164. "//toolchain/sem_ir:ids",
  165. "//toolchain/sem_ir:inst",
  166. "//toolchain/sem_ir:inst_kind",
  167. ],
  168. )
  169. cc_library(
  170. name = "interface",
  171. srcs = ["interface.cpp"],
  172. hdrs = ["interface.h"],
  173. deps = [
  174. ":context",
  175. "//common:check",
  176. "//toolchain/sem_ir:file",
  177. "//toolchain/sem_ir:ids",
  178. "//toolchain/sem_ir:inst",
  179. "//toolchain/sem_ir:inst_kind",
  180. ],
  181. )
  182. cc_library(
  183. name = "member_access",
  184. srcs = ["member_access.cpp"],
  185. hdrs = ["member_access.h"],
  186. deps = [
  187. ":context",
  188. "//common:check",
  189. "//toolchain/base:kind_switch",
  190. "//toolchain/diagnostics:diagnostic_emitter",
  191. "//toolchain/sem_ir:file",
  192. "//toolchain/sem_ir:ids",
  193. "//toolchain/sem_ir:inst",
  194. "//toolchain/sem_ir:inst_kind",
  195. "@llvm-project//llvm:Support",
  196. ],
  197. )
  198. cc_library(
  199. name = "node_stack",
  200. srcs = ["node_stack.cpp"],
  201. hdrs = ["node_stack.h"],
  202. deps = [
  203. "//common:check",
  204. "//common:ostream",
  205. "//common:vlog",
  206. "//toolchain/parse:node_kind",
  207. "//toolchain/parse:tree",
  208. "//toolchain/sem_ir:ids",
  209. "@llvm-project//llvm:Support",
  210. ],
  211. )
  212. cc_library(
  213. name = "operator",
  214. srcs = ["operator.cpp"],
  215. hdrs = ["operator.h"],
  216. deps = [
  217. ":call",
  218. ":context",
  219. ":member_access",
  220. "//common:check",
  221. "//toolchain/parse:node_kind",
  222. "//toolchain/sem_ir:file",
  223. "//toolchain/sem_ir:ids",
  224. "//toolchain/sem_ir:inst",
  225. "//toolchain/sem_ir:inst_kind",
  226. ],
  227. )
  228. cc_library(
  229. name = "pointer_dereference",
  230. srcs = ["pointer_dereference.cpp"],
  231. hdrs = ["pointer_dereference.h"],
  232. deps = [
  233. ":context",
  234. "//common:check",
  235. "//toolchain/parse:node_kind",
  236. "//toolchain/sem_ir:ids",
  237. "//toolchain/sem_ir:inst",
  238. "//toolchain/sem_ir:inst_kind",
  239. "@llvm-project//llvm:Support",
  240. ],
  241. )
  242. cc_library(
  243. name = "scope_stack",
  244. srcs = ["scope_stack.cpp"],
  245. hdrs = [
  246. "lexical_lookup.h",
  247. "scope_index.h",
  248. "scope_stack.h",
  249. ],
  250. deps = [
  251. "//common:check",
  252. "//common:ostream",
  253. "//common:vlog",
  254. "//toolchain/base:index_base",
  255. "//toolchain/sem_ir:file",
  256. "//toolchain/sem_ir:ids",
  257. "@llvm-project//llvm:Support",
  258. ],
  259. )
  260. cc_library(
  261. name = "sem_ir_diagnostic_converter",
  262. srcs = ["sem_ir_diagnostic_converter.cpp"],
  263. hdrs = ["sem_ir_diagnostic_converter.h"],
  264. deps = [
  265. ":context",
  266. "//toolchain/diagnostics:diagnostic_emitter",
  267. "//toolchain/parse:tree_node_diagnostic_converter",
  268. "//toolchain/sem_ir:file",
  269. "@llvm-project//llvm:Support",
  270. ],
  271. )