TypeProxy changed to handle modifiers internally

This commit is contained in:
ProgramSnail 2023-08-13 12:47:32 +03:00
parent 5f8d5c5569
commit fe6507ae12
7 changed files with 222 additions and 114 deletions

View file

@ -87,12 +87,13 @@ nodes::TypeProxy build_array_type(parser::ParseTree::Node parser_node,
build_node(parser_node));
}
// TODO: add different reference types
// '^' type
nodes::TypeProxy build_reference_type(parser::ParseTree::Node parser_node,
nodes::TypeStorage &type_storage) {
nodes::TypeProxy type =
build_type(parser_node.nth_named_child(0), type_storage);
type.get()->set_is_on_heap(true);
type.get()->set_modifier(nodes::Modifier::REF);
return type;
}
@ -124,7 +125,7 @@ nodes::TypeProxy build_modified_type(parser::ParseTree::Node parser_node,
return type_storage.add_type(
nodes::Type(nodes::Identifier(build_node(parser_node),
nodes::Identifier::SIMPLE_TYPE, identifier),
std::move(parameters), false));
std::move(parameters)));
}
// type_identifier ('[' type+ ']')?
@ -141,7 +142,7 @@ nodes::TypeProxy build_simple_type(parser::ParseTree::Node parser_node,
}
return type_storage.add_type(
nodes::Type(build_identifier(name_node), std::move(parameters), false));
nodes::Type(build_identifier(name_node), std::move(parameters)));
}
} // namespace builders