visitor base fixed

This commit is contained in:
ProgramSnail 2023-04-25 14:52:38 +03:00
parent 2ff2f3af12
commit c6c2a00e04
3 changed files with 89 additions and 57 deletions

View file

@ -369,7 +369,7 @@ struct TypeDefinition {
struct AnnotatedAbstractType {
AbstractTypeIdentifier type;
std::vector<TypeclassExpression> typeclasses;
std::vector<std::unique_ptr<TypeclassExpression>> typeclasses;
utils::IdType type_graph_id_;
};
@ -459,7 +459,8 @@ struct AccessExpression {
// Other Expressions -----------------
struct FunctionCallExpression {
std::unique_ptr<std::variant<SubExpressionToken, TypeExpression>> prefix;
std::variant<std::unique_ptr<SubExpressionToken>,
std::unique_ptr<TypeExpression>> prefix;
ExtendedName name;
std::vector<FunctionArgument> arguments;
};
@ -547,22 +548,22 @@ struct ExtendedScopedAnyType {
// Typeclass -----------------
struct TypeclassExpression {
std::vector<TypeSubExpression> namespaces;
std::vector<TypeSubExpression> types;
TypeclassSubExpression typeclass;
utils::IdType type_id_;
};
struct ParametrizedTypeclass {
TypeclassIdentifier typeclass_expression;
std::vector<TypeExpression> parameters;
TypeclassIdentifier typeclass;
std::vector<std::unique_ptr<TypeExpression>> parameters;
};
// Typeclass & Type -----------------
struct ParametrizedType {
AnyTypeIdentifier type_expression;
std::vector<TypeExpression> parameters;
AnyTypeIdentifier type;
std::vector<std::unique_ptr<TypeExpression>> parameters;
};
// ----------------- Comments [IGNORE] -----------------

View file

@ -45,6 +45,7 @@ protected:
// Flow control -----------------
virtual void Visit(TypeConstructorPattern* node);
virtual void Visit(MatchCase* node);
virtual void Visit(Match* node);
virtual void Visit(Condition* node);
@ -53,6 +54,8 @@ protected:
virtual void Visit(ForLoop* node);
virtual void Visit(LoopLoop* node);
virtual void Visit(PatternToken& node); // variant
virtual void Visit(Pattern& node); // variant
virtual void Visit(FlowControl& node); // variant
// Statements, expressions, blocks, etc. -----------------
@ -107,7 +110,6 @@ protected:
virtual void Visit(FunctionType* node);
virtual void Visit(TupleType* node);
virtual void Visit(VariantType* node);
virtual void Visit(ParametrizedType* node);
virtual void Visit(TypeExpression* node);
virtual void Visit(AnyType& node); // variant
@ -116,14 +118,15 @@ protected:
// Typeclass
virtual void Visit(ParametrizedTypeclass* node);
virtual void Visit(TypeclassExpression* node);
virtual void Visit(ParametrizedTypeclass* node);
virtual void Visit(TypeclassUsage& node); // variant
virtual void Visit(TypeclassSubExpression& node); // variant
// Typeclass & Type
virtual void Visit(TypeParameter& node); // variant
virtual void Visit(ParametrizedType* node);
virtual void Visit(TypeSubExpression& node); // variant
// Identifiers, constants, etc. -----------------