Improve error message when text unmarshaling a nested message with a required field.

Signed-off-by: David Symonds <dsymonds@golang.org>
diff --git a/proto/testdata/test.proto b/proto/testdata/test.proto
index 698c8ce..f607113 100644
--- a/proto/testdata/test.proto
+++ b/proto/testdata/test.proto
@@ -237,6 +237,10 @@
   extensions 100 to max;
 }
 
+message RequiredInnerMessage {
+  required InnerMessage leo_finally_won_an_oscar = 1;
+}
+
 message MyMessage {
   required int32 count = 1;
   optional string name = 2;
@@ -244,6 +248,7 @@
   repeated string pet = 4;
   optional InnerMessage inner = 5;
   repeated OtherMessage others = 6;
+  optional RequiredInnerMessage we_must_go_deeper = 13;
   repeated InnerMessage rep_inner = 12;
 
   enum Color {
diff --git a/proto/text_parser.go b/proto/text_parser.go
index b5e1c8e..b5fba5b 100644
--- a/proto/text_parser.go
+++ b/proto/text_parser.go
@@ -663,7 +663,8 @@
 				return err
 			}
 			reqFieldErr = err
-		} else if props.Required {
+		}
+		if props.Required {
 			reqCount--
 		}
 
diff --git a/proto/text_parser_test.go b/proto/text_parser_test.go
index d2e4cca..32c4117 100644
--- a/proto/text_parser_test.go
+++ b/proto/text_parser_test.go
@@ -336,6 +336,16 @@
 		},
 	},
 
+	// Missing required field in a required submessage
+	{
+		in:  `count: 42 we_must_go_deeper < leo_finally_won_an_oscar <> >`,
+		err: `proto: required field "testdata.InnerMessage.host" not set`,
+		out: &MyMessage{
+			Count:          Int32(42),
+			WeMustGoDeeper: &RequiredInnerMessage{LeoFinallyWonAnOscar: &InnerMessage{}},
+		},
+	},
+
 	// Repeated non-repeated field
 	{
 		in:  `name: "Rob" name: "Russ"`,