BUILD 7.1 KB

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