internal/impl: verify lazy unmarshal on Deterministic encoding

I noticed we did not have an explicit test for this entry point.

Change-Id: Ifdcd2454cd6ace2a039bdbabf8411e1f57644683
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/703276
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Florian Zenker <floriank@google.com>
diff --git a/internal/impl/lazy_test.go b/internal/impl/lazy_test.go
index e0a91cc..a20ec18 100644
--- a/internal/impl/lazy_test.go
+++ b/internal/impl/lazy_test.go
@@ -198,6 +198,30 @@
 	}
 }
 
+func TestExtensionLazyDeterministic(t *testing.T) {
+	if !flags.LazyUnmarshalExtensions {
+		t.Skip("lazy extension unmarshaling disabled; not built with the protolegacy tag")
+	}
+
+	tree := proto.Clone(treeTemplate)
+	proto.SetExtension(tree, lazytestpb.E_Bat, &lazytestpb.FlyingFox{Species: &spGH})
+	proto.SetExtension(tree, lazytestpb.E_BatPup, &lazytestpb.FlyingFox{Species: &spP})
+
+	nt := roundtrip(t, tree).(*lazytestpb.Tree)
+
+	if extensionIsInitialized(t, nt, lazytestpb.E_Bat) {
+		t.Errorf("Extension unexpectedly initialized after Unmarshal")
+	}
+	proto.Size(nt)
+	if extensionIsInitialized(t, nt, lazytestpb.E_Bat) {
+		t.Errorf("Extension unexpectedly initialized after Size")
+	}
+	proto.MarshalOptions{Deterministic: true}.Size(nt)
+	if !extensionIsInitialized(t, nt, lazytestpb.E_Bat) {
+		t.Errorf("Extension unexpectedly not initialized after deterministic Size")
+	}
+}
+
 func TestExtensionNestedScopeLazy(t *testing.T) {
 	if !flags.LazyUnmarshalExtensions {
 		t.Skip("lazy extension unmarshaling disabled; not built with the protolegacy tag")