mirror of
https://codeberg.org/ProgramSnail/lang_2023.git
synced 2025-12-08 16:08:45 +00:00
fixes
This commit is contained in:
parent
3abac1b643
commit
b901078956
6 changed files with 291 additions and 155 deletions
210
src/types.cpp
210
src/types.cpp
|
|
@ -320,27 +320,27 @@ std::optional<utils::IdType> Type::InContext(const std::unordered_map<std::strin
|
|||
size_t this_index = type_.index();
|
||||
|
||||
switch (this_index) {
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).InContext(context);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).InContext(context);
|
||||
case 2:
|
||||
return std::nullopt;
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).InContext(context);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).InContext(context);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).InContext(context);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).InContext(context);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).InContext(context);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).InContext(context);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).InContext(context);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).InContext(context);
|
||||
case 2:
|
||||
return std::nullopt;
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).InContext(context);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).InContext(context);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).InContext(context);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).InContext(context);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).InContext(context);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).InContext(context);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
|
|
@ -352,27 +352,27 @@ bool Type::Same(const Type& type) const {
|
|||
|
||||
if (this_index == type_index) {
|
||||
switch (this_index) {
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).Same(std::get<AbstractType>(type.type_));
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).Same(std::get<DefinedType>(type.type_));
|
||||
case 2:
|
||||
return std::get<InternalType>(type_) == std::get<InternalType>(type.type_);
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).Same(std::get<TupleType>(type.type_));
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).Same(std::get<VariantType>(type.type_));
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).Same(std::get<ReferenceToType>(type.type_));
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).Same(std::get<FunctionType>(type.type_));
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).Same(std::get<ArrayType>(type.type_));
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).Same(std::get<OptionalType>(type.type_));
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).Same(std::get<AbstractType>(type.type_));
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).Same(std::get<DefinedType>(type.type_));
|
||||
case 2:
|
||||
return std::get<InternalType>(type_) == std::get<InternalType>(type.type_);
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).Same(std::get<TupleType>(type.type_));
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).Same(std::get<VariantType>(type.type_));
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).Same(std::get<ReferenceToType>(type.type_));
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).Same(std::get<FunctionType>(type.type_));
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).Same(std::get<ArrayType>(type.type_));
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).Same(std::get<OptionalType>(type.type_));
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -385,27 +385,27 @@ bool Type::operator<(const Type& type) const {
|
|||
|
||||
if (this_index == type_index) {
|
||||
switch (this_index) {
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_) < std::get<AbstractType>(type.type_);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_) < std::get<DefinedType>(type.type_);
|
||||
case 2:
|
||||
return std::get<InternalType>(type_) == std::get<InternalType>(type.type_);
|
||||
case 3:
|
||||
return std::get<TupleType>(type_) < std::get<TupleType>(type.type_);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_) < std::get<VariantType>(type.type_);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_) < std::get<ReferenceToType>(type.type_);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_) < std::get<FunctionType>(type.type_);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_) < std::get<ArrayType>(type.type_);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_) < std::get<OptionalType>(type.type_);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_) < std::get<AbstractType>(type.type_);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_) < std::get<DefinedType>(type.type_);
|
||||
case 2:
|
||||
return std::get<InternalType>(type_) == std::get<InternalType>(type.type_);
|
||||
case 3:
|
||||
return std::get<TupleType>(type_) < std::get<TupleType>(type.type_);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_) < std::get<VariantType>(type.type_);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_) < std::get<ReferenceToType>(type.type_);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_) < std::get<FunctionType>(type.type_);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_) < std::get<ArrayType>(type.type_);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_) < std::get<OptionalType>(type.type_);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -421,27 +421,27 @@ std::optional<utils::IdType> Type::GetFieldType(const std::string& name,
|
|||
size_t index = type_.index();
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 2:
|
||||
return std::nullopt;
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).GetFieldType(name, type_namespaces);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
case 0:
|
||||
return std::get<AbstractType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 1:
|
||||
return std::get<DefinedType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 2:
|
||||
return std::nullopt;
|
||||
case 3:
|
||||
return std::get<TupleType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 4:
|
||||
return std::get<VariantType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 5:
|
||||
return std::get<ReferenceToType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 6:
|
||||
return std::get<FunctionType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 7:
|
||||
return std::get<ArrayType>(type_).GetFieldType(name, type_namespaces);
|
||||
case 8:
|
||||
return std::get<OptionalType>(type_).GetFieldType(name, type_namespaces);
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
|
|
@ -451,27 +451,27 @@ std::string Type::GetTypeName() const {
|
|||
size_t index = type_.index();
|
||||
|
||||
switch (index) {
|
||||
case 0:
|
||||
return "AbstractType";
|
||||
case 1:
|
||||
return "DefinedType";
|
||||
case 2:
|
||||
return "Builtin";
|
||||
case 3:
|
||||
return "TupleType";
|
||||
case 4:
|
||||
return "VariantType";
|
||||
case 5:
|
||||
return "ReferenceToType";
|
||||
case 6:
|
||||
return "FunctionType";
|
||||
case 7:
|
||||
return "ArrayType";
|
||||
case 8:
|
||||
return "OptionalType";
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
case 0:
|
||||
return "AbstractType";
|
||||
case 1:
|
||||
return "DefinedType";
|
||||
case 2:
|
||||
return "Builtin";
|
||||
case 3:
|
||||
return "TupleType";
|
||||
case 4:
|
||||
return "VariantType";
|
||||
case 5:
|
||||
return "ReferenceToType";
|
||||
case 6:
|
||||
return "FunctionType";
|
||||
case 7:
|
||||
return "ArrayType";
|
||||
case 8:
|
||||
return "OptionalType";
|
||||
default:
|
||||
// error
|
||||
break;
|
||||
}
|
||||
|
||||
return ""; // ??
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue