Make diagnostic for use of default member initializer before enclosing class is
complete a little more general; it is produced in other cases than the one that
it previously talked about.

llvm-svn: 287713
diff --git a/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp b/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp
index 9b54240..3d5e772 100644
--- a/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp
+++ b/clang/test/SemaCXX/cxx1y-initializer-aggregates.cpp
@@ -61,3 +61,19 @@
   };
   static_assert(B(6).f() == 18, "");
 }
+
+namespace use_self {
+  struct FibTree {
+    int n;
+    FibTree *l = // expected-note {{declared here}}
+      n > 1 ? new FibTree{n-1} : &fib0; // expected-error {{default member initializer for 'l' needed}}
+    FibTree *r = // expected-note {{declared here}}
+      n > 2 ? new FibTree{n-2} : &fib0; // expected-error {{default member initializer for 'r' needed}}
+    int v = l->v + r->v;
+
+    static FibTree fib0;
+  };
+  FibTree FibTree::fib0{0, nullptr, nullptr, 1};
+
+  int fib(int n) { return FibTree{n}.v; }
+}