Files
carbon-lang/common/BUILD
T
Jon Ross-PerkinsandChandler Carruth 352fec1885 Add some coarse debug information to semantics. (#2382)
Example stack:

```
1.	node_stack_:
	0.	FunctionDefinitionStart
	1.	ReturnStatement -> node1
2.	node_block_stack_:
	0.	block0
	1.	block1
```

Example trace output:

```
*** SemanticsParseTreeHandler::Build Begin ***
Push 0: FunctionIntroducer
Push 1: DeclaredName
Push 2: ParameterListEnd
Pop 2: ParameterListEnd
Push 2: ParameterList
Pop 2: ParameterList
Pop 0: FunctionIntroducer
AddNode block0: FunctionDeclaration()
AddNode block0: BindName(ident0, node0)
AddNode block0: FunctionDefinition(node0, block1)
Push 0: FunctionDefinitionStart
Push 1: Literal -> IntegerLiteral
AddNode block1: IntegerLiteral(int0): node_xref1
Push 2: StatementEnd
Pop 2: StatementEnd
Pop 1: any (Literal) -> node0
Push 1: ReturnStatement -> ReturnExpression
AddNode block1: ReturnExpression(node0)
Pop 0: FunctionDefinitionStart
Push 0: FunctionDefinition
*** SemanticsParseTreeHandler::Build End ***
cross_reference_irs.size == 2,
cross_references = {
  node_xref0 = "xref(ir0, block0, node0)";
  node_xref1 = "xref(ir0, block0, node1)";
},
identifiers = {
  ident0 = "Foo";
},
integer_literals = {
  int0 = 0;
},
node_blocks = {
  block0 = {
    node0 = FunctionDeclaration();
    node1 = BindName(ident0, node0);
    node2 = FunctionDefinition(node0, block1);
  },
  block1 = {
    node0 = IntegerLiteral(int0): node_xref1;
    node1 = ReturnExpression(node0);
  },
}
```

Co-authored-by: Chandler Carruth <chandlerc@gmail.com>
2022-11-11 14:10:13 -08:00

142 lines
2.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
package(default_visibility = ["//visibility:public"])
cc_library(
name = "bazel_working_dir",
hdrs = ["bazel_working_dir.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "check",
srcs = [
"check_internal.cpp",
"check_internal.h",
],
hdrs = ["check.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "check_test",
srcs = ["check_test.cpp"],
deps = [
":check",
"//common:gtest_main",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "error",
hdrs = ["error.h"],
deps = [
":check",
":ostream",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "error_test",
srcs = ["error_test.cpp"],
deps = [
":error",
"//common:gtest_main",
"@com_google_googletest//:gtest",
],
)
# This does extra initialization on top of googletest's gtest_main in order to
# provide stack traces on unexpected exits, because we normally rely on LLVM
# code for that.
#
# This replaces "@com_google_googletest//:gtest_main";
# "@com_google_googletest//:gtest" should still be used directly.
cc_library(
name = "gtest_main",
testonly = 1,
srcs = ["gtest_main.cpp"],
deps = [
"@com_google_googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "indirect_value",
hdrs = ["indirect_value.h"],
)
cc_test(
name = "indirect_value_test",
srcs = ["indirect_value_test.cpp"],
deps = [
":indirect_value",
"//common:gtest_main",
"@com_google_googletest//:gtest",
],
)
cc_library(
name = "metaprogramming",
hdrs = ["metaprogramming.h"],
)
cc_library(
name = "ostream",
hdrs = ["ostream.h"],
deps = [
":metaprogramming",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "string_helpers",
srcs = ["string_helpers.cpp"],
hdrs = ["string_helpers.h"],
deps = [
":check",
":error",
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "string_helpers_test",
srcs = ["string_helpers_test.cpp"],
deps = [
":string_helpers",
"//common:gtest_main",
"@com_google_googletest//:gtest",
"@llvm-project//llvm:Support",
],
)
cc_library(
name = "vlog",
srcs = ["vlog_internal.h"],
hdrs = ["vlog.h"],
deps = [
"@llvm-project//llvm:Support",
],
)
cc_test(
name = "vlog_test",
srcs = ["vlog_test.cpp"],
deps = [
":vlog",
"//common:gtest_main",
"@com_google_googletest//:gtest",
],
)