mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
tmp
This commit is contained in:
parent
8135e28821
commit
156d5c7cb7
@ -262,7 +262,22 @@ TypeConstructor TypeSystem::declareTypeConstructor(string _name, string _canonic
|
|||||||
{Arity{vector<Sort>{_arguments, baseSort}, primitiveClass(PrimitiveClass::Type)}},
|
{Arity{vector<Sort>{_arguments, baseSort}, primitiveClass(PrimitiveClass::Type)}},
|
||||||
_declaration
|
_declaration
|
||||||
});
|
});
|
||||||
return TypeConstructor{index};
|
TypeConstructor constructor{index};
|
||||||
|
if (_arguments)
|
||||||
|
{
|
||||||
|
std::vector<Sort> argumentSorts;
|
||||||
|
std::generate_n(std::back_inserter(argumentSorts), _arguments, [&](){ return Sort{{primitiveClass(PrimitiveClass::Type)}}; });
|
||||||
|
std::vector<Type> argumentTypes;
|
||||||
|
std::generate_n(std::back_inserter(argumentTypes), _arguments, [&](){ return freshVariable({}); });
|
||||||
|
auto error = instantiateClass(type(constructor, argumentTypes), Arity{argumentSorts, primitiveClass(PrimitiveClass::Kind)}, {});
|
||||||
|
solAssert(!error, *error);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto error = instantiateClass(type(constructor, {}), Arity{{}, primitiveClass(PrimitiveClass::Type)}, {});
|
||||||
|
solAssert(!error, *error);
|
||||||
|
}
|
||||||
|
return constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::variant<TypeClass, std::string> TypeSystem::declareTypeClass(Type _typeVariable, std::map<std::string, Type> _functions, std::string _name, Declaration const* _declaration)
|
std::variant<TypeClass, std::string> TypeSystem::declareTypeClass(Type _typeVariable, std::map<std::string, Type> _functions, std::string _name, Declaration const* _declaration)
|
||||||
|
Loading…
Reference in New Issue
Block a user