fixes , modifier enum refacing, type visitor part

This commit is contained in:
ProgramSnail 2023-05-05 16:35:13 +03:00
parent b686fe00fb
commit c4045e292b
9 changed files with 147 additions and 132 deletions

View file

@ -296,8 +296,7 @@ struct NamespaceSources {
struct Namespace {
BaseNode base;
enum Modifier { Const, Var };
std::optional<Modifier> modifier; // modifier => variable namespace
std::optional<utils::IsConstModifier> modifier; // modifier => variable namespace
TypeIdentifier type;
NamespaceSources scope;
@ -318,7 +317,7 @@ struct ImportStatement {
struct AliasDefinitionStatement {
BaseNode base;
enum {Alias, Type, Let} modifier;
utils::AliasModifier modifier;
TypeIdentifier type;
std::vector<AbstractTypeIdentifier> parameters;
std::unique_ptr<TypeExpression> value;
@ -329,8 +328,8 @@ struct AliasDefinitionStatement {
struct VariableDefinitionStatement {
BaseNode base;
enum { Var, Const } modifier;
enum { Move, Assign } assignment_modifier;
utils::IsConstModifier modifier;
utils::AssignmentModifier assignment_modifier;
AnyName name;
SuperExpression value;
};
@ -358,7 +357,7 @@ struct FunctionDefinitionStatement {
struct TypeDefinitionStatement {
BaseNode base;
enum { Struct, Class } modifier;
utils::ClassModifier modifier;
std::unique_ptr<TypeDefinition> definition;
AnyType value;
@ -368,7 +367,7 @@ struct TypeDefinitionStatement {
struct AbstractTypeDefinitionStatement {
BaseNode base;
enum { Basic, Abstract } modifier;
utils::AbstractTypeModifier modifier;
std::unique_ptr<AnnotatedType> type;
utils::IdType type_graph_id_;
@ -389,7 +388,7 @@ struct TypeclassDefinitionStatement {
struct FunctionDefinition {
BaseNode base;
enum { Operator, Function } modifier;
utils::FunctionTypeModifier modifier;
ExtendedName name;
std::vector<ExtendedName> arguments;
};
@ -514,7 +513,7 @@ struct UnaryOperatorExpression {
struct ReferenceExpression {
BaseNode base;
std::vector<utils::ReferenceType> references;
std::vector<utils::ReferenceModifier> references;
std::unique_ptr<ScopedStatement> expression;
};
@ -558,9 +557,8 @@ struct ReturnExpression {
struct TypeConstructorParameter {
BaseNode base;
enum AssignmentModifier { Move, Assign };
std::optional<ExtendedName> name;
std::optional<AssignmentModifier> asignment_modifier;
std::optional<utils::AssignmentModifier> asignment_modifier;
SubExpression value;
};
@ -663,7 +661,7 @@ struct TypeExpression {
struct ExtendedScopedAnyType {
BaseNode base;
std::vector<utils::ReferenceType> references;
std::vector<utils::ReferenceModifier> references;
AnyType type;
};