bug fixes, tests passed, result modifier (!) added to function arguments and to types

This commit is contained in:
ProgramSnail 2023-07-24 13:01:34 +03:00
parent 4470454838
commit 3914ff7d8b
16 changed files with 418 additions and 62 deletions

View file

@ -34,26 +34,28 @@ private:
class Type : public Node {
public:
Type(Node node, Identifier &&identifier, bool is_on_heap = false,
bool is_optional = false)
bool is_optional = false, bool is_result = false)
: Node(node), name_(std::move(identifier)), is_on_heap_(is_on_heap),
is_optional_(is_optional) {}
is_optional_(is_optional), is_result_(is_result) {}
Type(Node node, const Identifier &identifier, bool is_on_heap = false,
bool is_optional = false)
bool is_optional = false, bool is_result = false)
: Node(node), name_(identifier), is_on_heap_(is_on_heap),
is_optional_(is_optional) {}
is_optional_(is_optional), is_result_(is_result) {}
Type(Node node, Identifier &&identifier, std::vector<TypeProxy> &&parameters,
bool is_on_heap = false, bool is_optional = false)
bool is_on_heap = false, bool is_optional = false,
bool is_result = false)
: Node(node), name_(std::move(identifier)),
parameters_(std::move(parameters)), is_on_heap_(is_on_heap),
is_optional_(is_optional) {}
is_optional_(is_optional), is_result_(is_result) {}
Type(Node node, const Identifier &identifier,
std::vector<TypeProxy> &&parameters, bool is_on_heap = false,
bool is_optional = false)
bool is_optional = false, bool is_result = false)
: Node(node), name_(identifier), parameters_(std::move(parameters)),
is_on_heap_(is_on_heap), is_optional_(is_optional) {}
is_on_heap_(is_on_heap), is_optional_(is_optional),
is_result_(is_result) {}
std::string *get_name() { return name_.get(); }
@ -71,12 +73,15 @@ public:
bool is_optional() { return is_optional_; }
bool is_result() { return is_result_; }
private:
Identifier name_;
std::vector<TypeProxy> parameters_;
// or use allocator ??
bool is_on_heap_ = false;
bool is_optional_ = false;
bool is_result_ = false;
};
class TypeStorage {