Merge pull request #2563 from corco/update-flex-bison-toolchain-for-bazel-8
Updated flex/bison toolchain for bazel 8+ compat
diff --git a/.bant-macros b/.bant-macros
new file mode 100644
index 0000000..c62c397
--- /dev/null
+++ b/.bant-macros
@@ -0,0 +1,23 @@
+# -*- Python -*-
+# https://github.com/hzeller/bant#macros
+#
+# Tell bant (that is not looking at *.bzl files) how custom rules behave, just
+# enough for it to see through them to provide features such as dwyu.
+
+record_recovered_syntax_errors = genrule(
+ name = name,
+ srcs = [src],
+ outs = [out],
+)
+
+genlex = genrule(
+ name = name,
+ srcs = [src],
+ outs = [out],
+)
+
+genyacc = genrule(
+ name = name,
+ srcs = [src],
+ outs = [header_out, source_out] + extra_outs,
+)
diff --git a/external_libs/editscript.h b/external_libs/editscript.h
index 8e01ef9..1f4dcb8 100644
--- a/external_libs/editscript.h
+++ b/external_libs/editscript.h
@@ -179,8 +179,10 @@
template <typename TokenIter>
class Diff {
private:
- friend Edits GetTokenDiffs<>(TokenIter tokens1_begin, TokenIter tokens1_end,
- TokenIter tokens2_begin, TokenIter tokens2_end);
+ friend Edits diff::GetTokenDiffs<>(TokenIter tokens1_begin,
+ TokenIter tokens1_end,
+ TokenIter tokens2_begin,
+ TokenIter tokens2_end);
/**
* Finds the differences between two vectors of tokens, returning edits
diff --git a/verible/common/text/tree-utils_test.cc b/verible/common/text/tree-utils_test.cc
index ace2284..0a77530 100644
--- a/verible/common/text/tree-utils_test.cc
+++ b/verible/common/text/tree-utils_test.cc
@@ -810,13 +810,11 @@
// FindSubtreeStartingAtOffset tests
constexpr std::string_view kFindSubtreeTestText("abcdef");
-const std::string_view kFindSubtreeTestSubstring(
- kFindSubtreeTestText.substr(1, 3));
struct FindSubtreeStartingAtOffsetTest : public testing::Test {
SymbolPtr tree;
FindSubtreeStartingAtOffsetTest()
- : tree(Leaf(0, kFindSubtreeTestSubstring)) {}
+ : tree(Leaf(0, kFindSubtreeTestText.substr(1, 3))) {}
};
// Test that a single leaf yields itself when it starts < offset.
diff --git a/verible/common/util/tree-operations.h b/verible/common/util/tree-operations.h
index b70da51..231d767 100644
--- a/verible/common/util/tree-operations.h
+++ b/verible/common/util/tree-operations.h
@@ -174,9 +174,11 @@
// `TreeNodeTraits<T>` is defined for every class `T` fulfilling the TreeNode
// concept. It can be used in SFINAE tests.
template <class Node, //
- typename Children_ =
- tree_operations_internal::TreeNodeChildrenTraits<Node>>
+ typename Children_ = detected_or_t<
+ UnavailableFeatureTraits,
+ tree_operations_internal::TreeNodeChildrenTraits, Node>>
struct TreeNodeTraits : FeatureTraits {
+ static constexpr bool available = Children_::available;
using Parent =
detected_or_t<UnavailableFeatureTraits,
tree_operations_internal::TreeNodeParentTraits, Node>;
diff --git a/verible/verilog/formatting/formatter_test.cc b/verible/verilog/formatting/formatter_test.cc
index 32e3a91..25d200e 100644
--- a/verible/verilog/formatting/formatter_test.cc
+++ b/verible/verilog/formatting/formatter_test.cc
@@ -8138,6 +8138,22 @@
" bit [31:0] second;\n"
" generic_type_name_t third;\n"
"} type_t;\n"},
+ {"typedef union soft packed {\n"
+ "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+ "} type_t;",
+ "typedef union soft packed {\n"
+ " bit [3:0] first;\n"
+ " bit [31:0] second;\n"
+ " generic_type_name_t third;\n"
+ "} type_t;\n"},
+ {"typedef union soft {\n"
+ "bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
+ "} type_t;",
+ "typedef union soft {\n"
+ " bit [3:0] first;\n"
+ " bit [31:0] second;\n"
+ " generic_type_name_t third;\n"
+ "} type_t;\n"},
{"typedef struct {\n"
"// comment\n"
"bit [3:0] first; bit [31:0] second; generic_type_name_t third;\n"
diff --git a/verible/verilog/parser/verilog-parser_test.cc b/verible/verilog/parser/verilog-parser_test.cc
index d4f5933..0600bb7 100644
--- a/verible/verilog/parser/verilog-parser_test.cc
+++ b/verible/verilog/parser/verilog-parser_test.cc
@@ -3805,6 +3805,10 @@
"union tagged packed { int i; bit b; } foo;",
"union tagged packed signed { int i; bit b; } foo;",
"union tagged packed unsigned { int i; bit b; } foo;",
+ "union soft { int i; bit b; } foo;",
+ "union soft packed { int i; bit b; } foo;",
+ "union soft packed signed { int i; bit b; } foo;",
+ "union soft packed unsigned { int i; bit b; } foo;",
};
// TODO(fangism): implement and test ENUM_CONSTANT
diff --git a/verible/verilog/parser/verilog.y b/verible/verilog/parser/verilog.y
index 33c6a49..00c2ead 100644
--- a/verible/verilog/parser/verilog.y
+++ b/verible/verilog/parser/verilog.y
@@ -3729,7 +3729,7 @@
struct_data_type
: TK_struct packed_signing_opt '{' struct_union_member_list '}'
{ $$ = MakeTaggedNode(N::kStructType, $1, $2, MakeBraceGroup($3, $4, $5)); }
- | TK_union TK_tagged_opt packed_signing_opt '{' struct_union_member_list '}'
+ | TK_union TK_union_qualifier_opt packed_signing_opt '{' struct_union_member_list '}'
{ $$ = MakeTaggedNode(N::kUnionType, $1, $2, $3,
MakeBraceGroup($4, $5, $6)); }
;
@@ -7384,6 +7384,14 @@
| /* empty */
{ $$ = nullptr; }
;
+TK_union_qualifier_opt
+ : TK_soft
+ { $$ = std::move($1); }
+ | TK_tagged
+ { $$ = std::move($1); }
+ | /* empty */
+ { $$ = nullptr; }
+ ;
TK_virtual_opt
: TK_virtual
{ $$ = std::move($1); }