@@ -641,6 +641,35 @@ class ArrayTypeRepr : public TypeRepr {
641641 friend class TypeRepr ;
642642};
643643
644+ // / An InlineArray type e.g `[2 x Foo]`, sugar for `InlineArray<2, Foo>`.
645+ class InlineArrayTypeRepr : public TypeRepr {
646+ TypeRepr *Count;
647+ TypeRepr *Element;
648+ SourceRange Brackets;
649+
650+ InlineArrayTypeRepr (TypeRepr *count, TypeRepr *element, SourceRange brackets)
651+ : TypeRepr(TypeReprKind::InlineArray), Count(count), Element(element),
652+ Brackets (brackets) {}
653+
654+ public:
655+ static InlineArrayTypeRepr *create (ASTContext &ctx, TypeRepr *count,
656+ TypeRepr *element, SourceRange brackets);
657+
658+ TypeRepr *getCount () const { return Count; }
659+ TypeRepr *getElement () const { return Element; }
660+ SourceRange getBrackets () const { return Brackets; }
661+
662+ static bool classof (const TypeRepr *T) {
663+ return T->getKind () == TypeReprKind::InlineArray;
664+ }
665+
666+ private:
667+ SourceLoc getStartLocImpl () const { return Brackets.Start ; }
668+ SourceLoc getEndLocImpl () const { return Brackets.End ; }
669+ void printImpl (ASTPrinter &Printer, const PrintOptions &Opts) const ;
670+ friend class TypeRepr ;
671+ };
672+
644673// / A dictionary type.
645674// / \code
646675// / [K : V]
@@ -1626,6 +1655,7 @@ inline bool TypeRepr::isSimple() const {
16261655 case TypeReprKind::Fixed:
16271656 case TypeReprKind::Self:
16281657 case TypeReprKind::Array:
1658+ case TypeReprKind::InlineArray:
16291659 case TypeReprKind::SILBox:
16301660 case TypeReprKind::Isolated:
16311661 case TypeReprKind::Sending:
0 commit comments