result / optional return type modifiers for functions (one for all returns)

This commit is contained in:
ProgramSnail 2023-07-29 14:48:45 +03:00
parent 68463509d8
commit 195a26f9b7
10 changed files with 74 additions and 36 deletions

View file

@ -73,7 +73,7 @@ private:
class FunctionDefinition : public Node {
public:
enum ModifierType {
enum MethodModifier {
STATIC,
LET,
VAR,
@ -237,12 +237,13 @@ public:
FunctionDefinition(Node node, SymbolDocs &&docs,
std::vector<Constraint> &&constraints,
ModifierType modifier, const Identifier &name,
std::vector<Argument> &&arguments,
Modifier return_modifier, MethodModifier method_modifier,
const Identifier &name, std::vector<Argument> &&arguments,
bool are_annotations_same_to_names,
std::optional<ExpressionProxy> expression)
: Node(node), docs_(std::move(docs)),
constraints_(std::move(constraints)), modifier_(modifier), name_(name),
constraints_(std::move(constraints)), return_modifier_(return_modifier),
method_modifier_(method_modifier), name_(name),
arguments_(std::move(arguments)),
are_annotations_same_to_names_(are_annotations_same_to_names),
expression_(expression) {}
@ -265,7 +266,9 @@ public:
//
ModifierType get_modifier() const { return modifier_; }
Modifier get_return_modifier() const { return return_modifier_; }
MethodModifier get_method_modifier() const { return method_modifier_; }
//
@ -312,7 +315,8 @@ public:
private:
SymbolDocs docs_;
std::vector<Constraint> constraints_;
ModifierType modifier_;
Modifier return_modifier_;
MethodModifier method_modifier_;
Identifier name_;
std::vector<Argument> arguments_;
bool are_annotations_same_to_names_; // needed for easier prinitng process