| 159 | } |
| 160 | |
| 161 | experimental::Type TypeSystemHelpers::sumType(std::vector<Type> _elements) const |
| 162 | { |
| 163 | if (_elements.empty()) |
| 164 | return typeSystem.type(PrimitiveType::Void, {}); |
| 165 | if (_elements.size() == 1) |
| 166 | return _elements.front(); |
| 167 | Type result = _elements.back(); |
| 168 | for (Type type: _elements | ranges::views::reverse | ranges::views::drop_exactly(1)) |
| 169 | result = typeSystem.type(PrimitiveType::Sum, {type, result}); |
| 170 | return result; |
| 171 | } |
| 172 | |
| 173 | std::vector<experimental::Type> TypeSystemHelpers::destSumType(Type _tupleType) const |
| 174 | { |