BUILD 7.1 KB

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