Dump::visit (WildcardPattern &)
{}
+void
+Dump::visit (RestPattern &)
+{}
+
// void Dump::visit(RangePatternBound& ){}
void
void visit (LiteralPattern &pattern);
void visit (IdentifierPattern &pattern);
void visit (WildcardPattern &pattern);
+ void visit (RestPattern &pattern);
// void visit(RangePatternBound& bound);
void visit (RangePatternBoundLiteral &bound);
void visit (RangePatternBoundPath &bound);
class LiteralPattern;
class IdentifierPattern;
class WildcardPattern;
+class RestPattern;
class RangePatternBound;
class RangePatternBoundLiteral;
class RangePatternBoundPath;
virtual void visit (LiteralPattern &pattern) = 0;
virtual void visit (IdentifierPattern &pattern) = 0;
virtual void visit (WildcardPattern &pattern) = 0;
+ virtual void visit (RestPattern &pattern) = 0;
// virtual void visit(RangePatternBound& bound) = 0;
virtual void visit (RangePatternBoundLiteral &bound) = 0;
virtual void visit (RangePatternBoundPath &bound) = 0;
vis.visit (*this);
}
+void
+RestPattern::accept_vis (ASTVisitor &vis)
+{
+ vis.visit (*this);
+}
+
void
RangePatternBoundLiteral::accept_vis (ASTVisitor &vis)
{
}
};
+class RestPattern : public Pattern
+{
+ Location locus;
+
+public:
+ std::string as_string () const override { return ".."; }
+
+ RestPattern (Location locus) : locus (locus) {}
+
+ Location get_locus () const override final { return locus; }
+
+ void accept_vis (ASTVisitor &vis) override;
+};
+
// Base range pattern bound (lower or upper limit) - abstract
class RangePatternBound
{
void visit (AST::LiteralPattern &pattern) override {}
void visit (AST::IdentifierPattern &pattern) override {}
void visit (AST::WildcardPattern &pattern) override {}
+ void visit (AST::RestPattern &pattern) override {}
void visit (AST::RangePatternBoundLiteral &bound) override {}
void visit (AST::RangePatternBoundPath &bound) override {}
void visit (AST::RangePatternBoundQualPath &bound) override {}
// not possible
}
void
+AttrVisitor::visit (AST::RestPattern &)
+{
+ // not possible
+}
+void
AttrVisitor::visit (AST::RangePatternBoundLiteral &)
{
// not possible
void visit (AST::LiteralPattern &) override;
void visit (AST::IdentifierPattern &pattern) override;
void visit (AST::WildcardPattern &) override;
+ void visit (AST::RestPattern &) override;
void visit (AST::RangePatternBoundLiteral &) override;
void visit (AST::RangePatternBoundPath &bound) override;
void visit (AST::RangePatternBoundQualPath &bound) override;
void
ASTLoweringBase::visit (AST::WildcardPattern &)
{}
+void
+ASTLoweringBase::visit (AST::RestPattern &)
+{}
// void ASTLoweringBase::visit(RangePatternBoundbound) {}
void
ASTLoweringBase::visit (AST::RangePatternBoundLiteral &)
virtual void visit (AST::LiteralPattern &pattern);
virtual void visit (AST::IdentifierPattern &pattern);
virtual void visit (AST::WildcardPattern &pattern);
+ virtual void visit (AST::RestPattern &pattern);
// virtual void visit(RangePatternBound& bound);
virtual void visit (AST::RangePatternBoundLiteral &bound);
virtual void visit (AST::RangePatternBoundPath &bound);
ResolverBase::visit (AST::WildcardPattern &)
{}
+void
+ResolverBase::visit (AST::RestPattern &)
+{}
+
void
ResolverBase::visit (AST::RangePatternBoundLiteral &)
{}
void visit (AST::LiteralPattern &);
void visit (AST::IdentifierPattern &);
void visit (AST::WildcardPattern &);
+ void visit (AST::RestPattern &);
void visit (AST::RangePatternBoundLiteral &);
void visit (AST::RangePatternBoundPath &);
EarlyNameResolver::visit (AST::WildcardPattern &)
{}
+void
+EarlyNameResolver::visit (AST::RestPattern &)
+{}
+
void
EarlyNameResolver::visit (AST::RangePatternBoundLiteral &)
{}
virtual void visit (AST::LiteralPattern &pattern);
virtual void visit (AST::IdentifierPattern &pattern);
virtual void visit (AST::WildcardPattern &pattern);
+ virtual void visit (AST::RestPattern &pattern);
virtual void visit (AST::RangePatternBoundLiteral &bound);
virtual void visit (AST::RangePatternBoundPath &bound);
virtual void visit (AST::RangePatternBoundQualPath &bound);
AttributeChecker::visit (AST::WildcardPattern &)
{}
+void
+AttributeChecker::visit (AST::RestPattern &)
+{}
+
// void AttributeChecker::visit(RangePatternBound& ){}
void
void visit (AST::LiteralPattern &pattern);
void visit (AST::IdentifierPattern &pattern);
void visit (AST::WildcardPattern &pattern);
+ void visit (AST::RestPattern &pattern);
// void visit(RangePatternBound& bound);
void visit (AST::RangePatternBoundLiteral &bound);
void visit (AST::RangePatternBoundPath &bound);