mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 22:02:23 +01:00
This adds a test for invalid characters (that would've failed before, because the printed char isn't escaped). Not sure if there's a good way to test the PrintDiagnostic code, as it appears to occur on bison parser errors, which I'm just not sure how to trigger.
123 lines
2.9 KiB
Python
123 lines
2.9 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
|
|
|
|
# TODO(https://github.com/carbon-language/carbon-lang/issues/266):
|
|
# Migrate bison/flex usage to a more hermetic bazel build.
|
|
|
|
load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library")
|
|
load("//bazel/testing:golden_test.bzl", "golden_test")
|
|
|
|
cc_binary(
|
|
name = "executable_semantics",
|
|
srcs = ["main.cpp"],
|
|
deps = [
|
|
"//executable_semantics/syntax",
|
|
"@llvm-project//llvm:Support",
|
|
],
|
|
)
|
|
|
|
cc_library(
|
|
name = "tracing_flag",
|
|
srcs = ["tracing_flag.cpp"],
|
|
hdrs = ["tracing_flag.h"],
|
|
visibility = ["//executable_semantics:__subpackages__"],
|
|
)
|
|
|
|
EXAMPLES = [
|
|
"assignment_copy1",
|
|
"assignment_copy2",
|
|
"block1",
|
|
"block2",
|
|
"break1",
|
|
"choice1",
|
|
"continue1",
|
|
"fun_named_params",
|
|
"fun_named_params2",
|
|
"fun_recur",
|
|
"fun1",
|
|
"fun2",
|
|
"fun3",
|
|
"fun4",
|
|
"fun5",
|
|
"fun6_fail_type",
|
|
"funptr1",
|
|
"global_variable1",
|
|
"global_variable2",
|
|
"global_variable3",
|
|
"global_variable4",
|
|
"global_variable5",
|
|
"global_variable6",
|
|
"global_variable7",
|
|
"global_variable8",
|
|
"ignored_parameter",
|
|
"if1",
|
|
"if2",
|
|
"if3",
|
|
"invalid_char",
|
|
"match_any_int",
|
|
"match_int_default",
|
|
"match_int",
|
|
"match_placeholder",
|
|
"match_type",
|
|
"next",
|
|
"pattern_init",
|
|
"pattern_variable_fail",
|
|
"placeholder_variable",
|
|
"record1",
|
|
"star",
|
|
"struct1",
|
|
"struct2",
|
|
"struct3",
|
|
"tuple_assign",
|
|
"tuple_equality",
|
|
"tuple_equality2",
|
|
"tuple_equality3",
|
|
"tuple_match",
|
|
"tuple_match2",
|
|
"tuple_match3",
|
|
"tuple1",
|
|
"tuple2",
|
|
"tuple3",
|
|
"tuple4",
|
|
"tuple5",
|
|
"type_compute",
|
|
"type_compute2",
|
|
"type_compute3",
|
|
"while1",
|
|
"zero",
|
|
"experimental_continuation1",
|
|
"experimental_continuation2",
|
|
"experimental_continuation3",
|
|
"experimental_continuation4",
|
|
"experimental_continuation5",
|
|
"experimental_continuation6",
|
|
"experimental_continuation7",
|
|
"experimental_continuation8",
|
|
"experimental_continuation9",
|
|
]
|
|
|
|
[golden_test(
|
|
name = "%s_test" % e,
|
|
cmd = "'$(location executable_semantics) $(location testdata/%s.carbon)'" % e,
|
|
data = [
|
|
":executable_semantics",
|
|
"testdata/%s.carbon" % e,
|
|
],
|
|
golden = "testdata/%s.golden" % e,
|
|
) for e in EXAMPLES]
|
|
|
|
# Test --trace by expecting golden output to be a *subset* of trace output. Note
|
|
# the normal test must be used to update golden files.
|
|
[golden_test(
|
|
name = "%s_trace_test" % e,
|
|
cmd = "'$(location executable_semantics) --trace " +
|
|
"$(location testdata/%s.carbon)'" % e,
|
|
data = [
|
|
":executable_semantics",
|
|
"testdata/%s.carbon" % e,
|
|
],
|
|
golden = "testdata/%s.golden" % e,
|
|
golden_is_subset = True,
|
|
) for e in EXAMPLES]
|