Files
carbon-lang/toolchain/check/BUILD
T
Boaz Brickner 87b9cab7b1 Add support for importing a trivial global C++ function (#5033)
ASTUnit is owned by `CompileSubcommand`, passed through `Unit` to be
populated in `ImportCppFiles()` and used via `SemIR::File`.
When generating the AST, pass `-x c++` args to compile C++ (temporary
until we pass args properly).
`Cpp` namespace is marked as a special namespace and has dedicated logic
in `LookupNameInExactScope()`.
The logic for importing declarations from C++ to Carbon is in
`import_cpp.cpp`, but we're likely to want to refactor this
signfiicantly over time as it grows (perhaps a dedicated directory?).

Part of #4666.
2025-03-03 10:38:19 +00:00

301 lines
7.8 KiB
Python

# Part of the Carbon Language project, under the Apache License v2.0 with LLVM
# Exceptions. See /LICENSE for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
load("@rules_cc//cc:defs.bzl", "cc_library")
load("//testing/fuzzing:rules.bzl", "cc_fuzz_test")
package(default_visibility = ["//visibility:public"])
filegroup(
name = "testdata",
data = glob(["testdata/**/*.carbon"]),
)
cc_library(
name = "context",
srcs = [
"call.cpp",
"context.cpp",
"control_flow.cpp",
"convert.cpp",
"decl_name_stack.cpp",
"deduce.cpp",
"eval.cpp",
"eval_inst.cpp",
"facet_type.cpp",
"function.cpp",
"generic.cpp",
"global_init.cpp",
"impl_lookup.cpp",
"import.cpp",
"import_cpp.cpp",
"import_ref.cpp",
"inst.cpp",
"inst_block_stack.cpp",
"interface.cpp",
"literal.cpp",
"member_access.cpp",
"merge.cpp",
"modifiers.cpp",
"name_component.cpp",
"name_lookup.cpp",
"operator.cpp",
"pattern_match.cpp",
"return.cpp",
"subpattern.cpp",
"subst.cpp",
"type.cpp",
"type_completion.cpp",
],
hdrs = [
"call.h",
"context.h",
"control_flow.h",
"convert.h",
"decl_introducer_state.h",
"decl_name_stack.h",
"deduce.h",
"diagnostic_helpers.h",
"eval.h",
"eval_inst.h",
"facet_type.h",
"function.h",
"generic.h",
"global_init.h",
"impl_lookup.h",
"import.h",
"import_cpp.h",
"import_ref.h",
"inst.h",
"inst_block_stack.h",
"interface.h",
"keyword_modifier_set.h",
"literal.h",
"member_access.h",
"merge.h",
"modifiers.h",
"name_component.h",
"name_lookup.h",
"operator.h",
"param_and_arg_refs_stack.h",
"pattern_match.h",
"pending_block.h",
"region_stack.h",
"return.h",
"subpattern.h",
"subst.h",
"type.h",
"type_completion.h",
],
deps = [
":node_stack",
"//common:array_stack",
"//common:check",
"//common:map",
"//common:ostream",
"//common:raw_string_ostream",
"//common:set",
"//common:vlog",
"//toolchain/base:index_base",
"//toolchain/base:kind_switch",
"//toolchain/check:generic_region_stack",
"//toolchain/check:scope_stack",
"//toolchain/diagnostics:diagnostic_emitter",
"//toolchain/diagnostics:format_providers",
"//toolchain/lex:token_kind",
"//toolchain/lex:tokenized_buffer",
"//toolchain/parse:node_kind",
"//toolchain/parse:tree",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:formatter",
"//toolchain/sem_ir:inst",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//clang:frontend",
"@llvm-project//clang:sema",
"@llvm-project//clang:tooling",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "dump",
srcs = ["dump.cpp"],
deps = [
":context",
"//common:check",
"//common:ostream",
"//toolchain/lex:dump",
"//toolchain/lex:tokenized_buffer",
"//toolchain/parse:dump",
"//toolchain/parse:tree",
"//toolchain/sem_ir:dump",
"//toolchain/sem_ir:file",
],
# Always link dump methods.
alwayslink = 1,
)
cc_library(
name = "check",
srcs = [
"check.cpp",
"check_unit.cpp",
"check_unit.h",
"deferred_definition_worklist.cpp",
"deferred_definition_worklist.h",
"handle.h",
"node_id_traversal.cpp",
"node_id_traversal.h",
] +
# Glob handler files to avoid missing any.
glob([
"handle_*.cpp",
]),
hdrs = ["check.h"],
deps = [
":context",
":dump",
":impl",
":pointer_dereference",
":sem_ir_loc_diagnostic_emitter",
"//common:check",
"//common:error",
"//common:map",
"//common:ostream",
"//common:variant_helpers",
"//common:vlog",
"//toolchain/base:kind_switch",
"//toolchain/base:pretty_stack_trace_function",
"//toolchain/base:shared_value_stores",
"//toolchain/base:timings",
"//toolchain/diagnostics:diagnostic_emitter",
"//toolchain/diagnostics:format_providers",
"//toolchain/lex:token_index",
"//toolchain/lex:token_kind",
"//toolchain/lex:tokenized_buffer",
"//toolchain/parse:node_kind",
"//toolchain/parse:tree",
"//toolchain/sem_ir:entry_point",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:inst",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)
cc_fuzz_test(
name = "check_fuzzer",
size = "small",
srcs = ["check_fuzzer.cpp"],
corpus = glob(["fuzzer_corpus/*"]),
deps = [
"//common:exe_path",
"//testing/fuzzing:libfuzzer_header",
"//toolchain/driver",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "generic_region_stack",
srcs = ["generic_region_stack.cpp"],
hdrs = ["generic_region_stack.h"],
deps = [
"//common:array_stack",
"//common:check",
"//common:ostream",
"//common:vlog",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:inst",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "impl",
srcs = ["impl.cpp"],
hdrs = ["impl.h"],
deps = [
":context",
"//common:check",
"//toolchain/base:kind_switch",
"//toolchain/diagnostics:diagnostic_emitter",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:inst",
"//toolchain/sem_ir:typed_insts",
],
)
cc_library(
name = "node_stack",
srcs = ["node_stack.cpp"],
hdrs = ["node_stack.h"],
deps = [
"//common:check",
"//common:ostream",
"//common:vlog",
"//toolchain/parse:node_kind",
"//toolchain/parse:tree",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "pointer_dereference",
srcs = ["pointer_dereference.cpp"],
hdrs = ["pointer_dereference.h"],
deps = [
":context",
"//common:check",
"//toolchain/parse:node_kind",
"//toolchain/sem_ir:inst",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "scope_stack",
srcs = ["scope_stack.cpp"],
hdrs = [
"full_pattern_stack.h",
"lexical_lookup.h",
"scope_index.h",
"scope_stack.h",
],
deps = [
"//common:array_stack",
"//common:check",
"//common:ostream",
"//common:set",
"//common:vlog",
"//toolchain/base:index_base",
"//toolchain/base:value_ids",
"//toolchain/base:value_store",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "sem_ir_loc_diagnostic_emitter",
srcs = ["sem_ir_loc_diagnostic_emitter.cpp"],
hdrs = ["sem_ir_loc_diagnostic_emitter.h"],
deps = [
":context",
"//common:raw_string_ostream",
"//toolchain/diagnostics:diagnostic_emitter",
"//toolchain/lex:token_index",
"//toolchain/parse:tree",
"//toolchain/sem_ir:absolute_node_id",
"//toolchain/sem_ir:file",
"//toolchain/sem_ir:stringify_type",
"//toolchain/sem_ir:typed_insts",
"@llvm-project//llvm:Support",
],
)