[flang] handle review comment: make ctor private
authorEric Schweitz <eschweitz@nvidia.com>
Fri, 12 Apr 2019 17:19:41 +0000 (10:19 -0700)
committerEric Schweitz <eschweitz@nvidia.com>
Fri, 12 Apr 2019 17:19:41 +0000 (10:19 -0700)
Original-commit: flang-compiler/f18@cc6bf19f81c0856fc1566043bbf62fb335b03654
Reviewed-on: https://github.com/flang-compiler/f18/pull/408
Tree-same-pre-rewrite: false

flang/lib/FIR/builder.h
flang/lib/FIR/statements.h

index 53b8d9a44802998a456c0412b9eb0b719ce1548f..d88502e9d637137d5d286189bf950729f0ccf4f5 100644 (file)
@@ -34,7 +34,7 @@ struct FIRBuilder {
   template<typename A, typename B> QualifiedStmt<A> QualifiedInsert(B &&s) {
     CHECK(GetInsertionPoint());
     auto *statement{Statement::Create(GetInsertionPoint(), std::forward<B>(s))};
-    return MakeQualifiedStmt<A, B>(statement);
+    return QualifiedStmtCreate<A, B>(statement);
   }
 
   template<typename A> Statement *InsertTerminator(A &&s) {
index 764a6e5ac2be45aa1c4d81fefd4b9416ef4f50d3..f8049cbef8efab7508e450087976f278ac0cd6a1 100644 (file)
@@ -58,8 +58,11 @@ public:
 // at compile time.
 template<typename A> class QualifiedStmt {
 public:
+  template<typename T, typename U,
+      std::enable_if_t<std::is_base_of_v<T, U>, int>>
+  friend QualifiedStmt<T> QualifiedStmtCreate(Statement *s);
+
   QualifiedStmt() = delete;
-  QualifiedStmt(Statement *stmt) : stmt{stmt} {}
 
   // create a stub, where stmt == nullptr
   QualifiedStmt(std::nullptr_t) : stmt{nullptr} {}
@@ -68,11 +71,14 @@ public:
   operator A *() const;
 
   Statement *stmt;
+
+private:
+  QualifiedStmt(Statement *stmt) : stmt{stmt} {}
 };
 
 template<typename A, typename B,
     std::enable_if_t<std::is_base_of_v<A, B>, int> = 0>
-QualifiedStmt<A> MakeQualifiedStmt(Statement *s) {
+QualifiedStmt<A> QualifiedStmtCreate(Statement *s) {
   return QualifiedStmt<A>{s};
 }