@@ -433,6 +433,14 @@ class UnqualifiedIdentTypeRepr : public DeclRefTypeRepr {
433433 : DeclRefTypeRepr(K, Id, Loc, NumGenericArgs, hasGenericArgList) {}
434434
435435public:
436+ static UnqualifiedIdentTypeRepr *
437+ create (const ASTContext &C, DeclNameLoc NameLoc, DeclNameRef Name);
438+
439+ static UnqualifiedIdentTypeRepr *create (const ASTContext &C,
440+ DeclNameLoc NameLoc, DeclNameRef Name,
441+ ArrayRef<TypeRepr *> GenericArgs,
442+ SourceRange AngleBrackets);
443+
436444 static bool classof (const TypeRepr *T) {
437445 return T->getKind () == TypeReprKind::SimpleIdent ||
438446 T->getKind () == TypeReprKind::GenericIdent;
@@ -447,12 +455,14 @@ class UnqualifiedIdentTypeRepr : public DeclRefTypeRepr {
447455
448456// / A simple identifier type like "Int".
449457class SimpleIdentTypeRepr : public UnqualifiedIdentTypeRepr {
450- public:
458+ friend UnqualifiedIdentTypeRepr;
459+
451460 SimpleIdentTypeRepr (DeclNameLoc Loc, DeclNameRef Id)
452461 : UnqualifiedIdentTypeRepr(TypeReprKind::SimpleIdent, Loc, Id,
453462 /* NumGenericArgs=*/ 0 ,
454463 /* HasAngleBrackets=*/ false ) {}
455464
465+ public:
456466 // SmallVector::emplace_back will never need to call this because
457467 // we reserve the right size, but it does try statically.
458468 SimpleIdentTypeRepr (const SimpleIdentTypeRepr &repr)
@@ -477,20 +487,21 @@ class SimpleIdentTypeRepr : public UnqualifiedIdentTypeRepr {
477487class GenericIdentTypeRepr final
478488 : public UnqualifiedIdentTypeRepr,
479489 private llvm::TrailingObjects<GenericIdentTypeRepr, TypeRepr *> {
490+ friend UnqualifiedIdentTypeRepr;
480491 friend TrailingObjects;
481492 SourceRange AngleBrackets;
482493
483494 GenericIdentTypeRepr (DeclNameLoc Loc, DeclNameRef Id,
484495 ArrayRef<TypeRepr *> GenericArgs,
485496 SourceRange AngleBrackets);
486497
487- public:
488498 static GenericIdentTypeRepr *create (const ASTContext &C,
489499 DeclNameLoc Loc,
490500 DeclNameRef Id,
491501 ArrayRef<TypeRepr*> GenericArgs,
492502 SourceRange AngleBrackets);
493503
504+ public:
494505 ArrayRef<TypeRepr*> getGenericArgs () const {
495506 return {getTrailingObjects<TypeRepr *>(), getNumGenericArgs ()};
496507 }
0 commit comments