BUILD 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  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("//testing/fuzzing:rules.bzl", "cc_fuzz_test")
  5. load("//bazel/sh_run:rules.bzl", "glob_sh_run")
  6. load("//testing/file_test:rules.bzl", "file_test")
  7. package(default_visibility = ["//visibility:public"])
  8. cc_library(
  9. name = "semantics_builtin_kind",
  10. srcs = ["semantics_builtin_kind.cpp"],
  11. hdrs = ["semantics_builtin_kind.h"],
  12. textual_hdrs = ["semantics_builtin_kind.def"],
  13. deps = ["//common:enum_base"],
  14. )
  15. cc_library(
  16. name = "semantics_node_kind",
  17. srcs = ["semantics_node_kind.cpp"],
  18. hdrs = ["semantics_node_kind.h"],
  19. textual_hdrs = ["semantics_node_kind.def"],
  20. deps = [
  21. "//common:enum_base",
  22. "@llvm-project//llvm:Support",
  23. ],
  24. )
  25. cc_library(
  26. name = "semantics_node",
  27. srcs = ["semantics_node.cpp"],
  28. hdrs = ["semantics_node.h"],
  29. deps = [
  30. ":semantics_builtin_kind",
  31. ":semantics_node_kind",
  32. "//common:check",
  33. "//common:ostream",
  34. "//toolchain/base:index_base",
  35. "//toolchain/parser:parse_tree",
  36. "@llvm-project//llvm:Support",
  37. ],
  38. )
  39. cc_library(
  40. name = "semantics_node_stack",
  41. srcs = ["semantics_node_stack.cpp"],
  42. hdrs = ["semantics_node_stack.h"],
  43. deps = [
  44. ":semantics_node",
  45. "//common:check",
  46. "//common:ostream",
  47. "//common:vlog",
  48. "//toolchain/parser:parse_node_kind",
  49. "//toolchain/parser:parse_tree",
  50. "@llvm-project//llvm:Support",
  51. ],
  52. )
  53. cc_library(
  54. name = "semantics_ir",
  55. srcs = [
  56. "semantics_ir.cpp",
  57. "semantics_context.cpp",
  58. "semantics_node_block_stack.cpp",
  59. "semantics_declaration_name_stack.cpp",
  60. ] +
  61. # Glob handler files to avoid missing any.
  62. glob([
  63. "semantics_handle*.cpp",
  64. ]),
  65. hdrs = [
  66. "semantics_context.h",
  67. "semantics_declaration_name_stack.h",
  68. "semantics_ir.h",
  69. "semantics_node_block_stack.h",
  70. ],
  71. deps = [
  72. ":semantics_builtin_kind",
  73. ":semantics_node",
  74. ":semantics_node_kind",
  75. ":semantics_node_stack",
  76. "//common:check",
  77. "//common:ostream",
  78. "//common:vlog",
  79. "//toolchain/base:pretty_stack_trace_function",
  80. "//toolchain/diagnostics:diagnostic_kind",
  81. "//toolchain/lexer:numeric_literal",
  82. "//toolchain/lexer:token_kind",
  83. "//toolchain/lexer:tokenized_buffer",
  84. "//toolchain/parser:parse_node_kind",
  85. "//toolchain/parser:parse_tree",
  86. "//toolchain/parser:parse_tree_node_location_translator",
  87. "@llvm-project//llvm:Support",
  88. ],
  89. )
  90. cc_library(
  91. name = "semantics_ir_formatter",
  92. srcs = [
  93. "semantics_ir_formatter.cpp",
  94. ],
  95. hdrs = [
  96. "semantics_ir_formatter.h",
  97. ],
  98. deps = [
  99. ":semantics_ir",
  100. ":semantics_node_kind",
  101. "//toolchain/lexer:tokenized_buffer",
  102. "//toolchain/parser:parse_tree",
  103. "@llvm-project//llvm:Support",
  104. ],
  105. )
  106. cc_test(
  107. name = "semantics_ir_test",
  108. size = "small",
  109. srcs = ["semantics_ir_test.cpp"],
  110. deps = [
  111. "//testing/base:gtest_main",
  112. "//testing/base:test_raw_ostream",
  113. "//toolchain/base:yaml_test_helpers",
  114. "//toolchain/driver",
  115. "@com_google_googletest//:gtest",
  116. "@llvm-project//llvm:Support",
  117. ],
  118. )
  119. file_test(
  120. name = "semantics_file_test",
  121. srcs = ["semantics_file_test.cpp"],
  122. tests = glob(["testdata/**/*.carbon"]),
  123. deps = [
  124. "//toolchain/driver:driver_file_test_base",
  125. "@llvm-project//llvm:Support",
  126. ],
  127. )
  128. cc_fuzz_test(
  129. name = "semantics_fuzzer",
  130. size = "small",
  131. srcs = ["semantics_fuzzer.cpp"],
  132. corpus = glob(["fuzzer_corpus/*"]),
  133. deps = [
  134. "//toolchain/driver",
  135. "@llvm-project//llvm:Support",
  136. ],
  137. )
  138. glob_sh_run(
  139. args = [
  140. "$(location //toolchain/driver:carbon)",
  141. "dump",
  142. "semantics-ir",
  143. ],
  144. data = ["//toolchain/driver:carbon"],
  145. file_exts = ["carbon"],
  146. )
  147. glob_sh_run(
  148. args = [
  149. "$(location //toolchain/driver:carbon)",
  150. "-v",
  151. "dump",
  152. "semantics-ir",
  153. ],
  154. data = ["//toolchain/driver:carbon"],
  155. file_exts = ["carbon"],
  156. run_ext = "verbose",
  157. )