BUILD 3.9 KB

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