mirror of
https://codeberg.org/ProgramSnail/lang.git
synced 2025-12-25 16:28:46 +00:00
TypeProxy changed to handle modifiers internally
This commit is contained in:
parent
5f8d5c5569
commit
fe6507ae12
7 changed files with 222 additions and 114 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue