mirror of
https://github.com/zeek/zeek.git
synced 2025-10-03 23:28:20 +00:00
provide deprecated version of merge_type_list()
This commit is contained in:
parent
c4973706e0
commit
732faa998f
2 changed files with 31 additions and 0 deletions
25
src/Type.cc
25
src/Type.cc
|
@ -2673,6 +2673,31 @@ TypePtr merge_types(const TypePtr& arg_t1, const TypePtr& arg_t2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TypePtr merge_type_list(detail::ListExpr* elements)
|
||||||
|
{
|
||||||
|
TypeList* tl_type = elements->GetType()->AsTypeList();
|
||||||
|
const auto& tl = tl_type->GetTypes();
|
||||||
|
|
||||||
|
if ( tl.size() < 1 )
|
||||||
|
{
|
||||||
|
reporter->Error("no type can be inferred for empty list");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto t = tl[0];
|
||||||
|
|
||||||
|
if ( tl.size() == 1 )
|
||||||
|
return t;
|
||||||
|
|
||||||
|
for ( size_t i = 1; t && i < tl.size(); ++i )
|
||||||
|
t = merge_types(t, tl[i]);
|
||||||
|
|
||||||
|
if ( ! t )
|
||||||
|
reporter->Error("inconsistent types in list");
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
TypePtr maximal_type(detail::ListExpr* elements)
|
TypePtr maximal_type(detail::ListExpr* elements)
|
||||||
{
|
{
|
||||||
TypeList* tl_type = elements->GetType()->AsTypeList();
|
TypeList* tl_type = elements->GetType()->AsTypeList();
|
||||||
|
|
|
@ -928,6 +928,12 @@ extern TypeTag max_type(TypeTag t1, TypeTag t2);
|
||||||
// an error message) if the types are incompatible.
|
// an error message) if the types are incompatible.
|
||||||
TypePtr merge_types(const TypePtr& t1, const TypePtr& t2);
|
TypePtr merge_types(const TypePtr& t1, const TypePtr& t2);
|
||||||
|
|
||||||
|
// Given a list of expressions, returns a (ref'd) type reflecting
|
||||||
|
// a merged type consistent across all of them, or nil if this
|
||||||
|
// cannot be done.
|
||||||
|
[[deprecated("Remove in v6.1. Use maximal_type() if possible. See GH-2604.")]] TypePtr
|
||||||
|
merge_type_list(detail::ListExpr* elements);
|
||||||
|
|
||||||
// Given a list of expressions, returns the maximal type consistent across
|
// Given a list of expressions, returns the maximal type consistent across
|
||||||
// all of them, or nil if this cannot be done. "Maximal" incorporates
|
// all of them, or nil if this cannot be done. "Maximal" incorporates
|
||||||
// notions of arithmetic coercion, but otherwise requires type-equivalence.
|
// notions of arithmetic coercion, but otherwise requires type-equivalence.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue