internal/fetch: include goexperiment.jsonv2

For golang/go#71488
For golang/go#71845

Change-Id: Ib1b2fcbe5fede9a7c48207aee06a7659b0d49403
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/666935
LUCI-TryBot-Result: Go LUCI <[email protected]>
Reviewed-by: Jonathan Amsterdam <[email protected]>
kokoro-CI: kokoro <[email protected]>
Reviewed-by: Junyang Shao <[email protected]>
diff --git a/internal/fetch/load.go b/internal/fetch/load.go
index d890c2d..9069743 100644
--- a/internal/fetch/load.go
+++ b/internal/fetch/load.go
@@ -418,7 +418,7 @@
 		GOARCH:      goarch,
 		CgoEnabled:  true,
 		Compiler:    build.Default.Compiler,
-		BuildTags:   []string{"goexperiment.synctest"},
+		BuildTags:   []string{"goexperiment.jsonv2", "goexperiment.synctest"},
 		ReleaseTags: build.Default.ReleaseTags,
 
 		JoinPath: path.Join,
diff --git a/internal/fetch/load_test.go b/internal/fetch/load_test.go
index a6b442c..4d907c3 100644
--- a/internal/fetch/load_test.go
+++ b/internal/fetch/load_test.go
@@ -27,6 +27,12 @@
 		package synctest
 		var X int
 	`
+	jsonv2Body := `
+		//go:build goexperiment.jsonv2
+
+		package json
+		var X int
+	`
 
 	plainContents := map[string]string{
 		"README.md":  "THIS IS A README",
@@ -45,6 +51,11 @@
 		"st.go":    synctestBody,
 	}
 
+	jsonv2Contents := map[string]string{
+		"plain.go": plainGoBody,
+		"json.go":  jsonv2Body,
+	}
+
 	for _, test := range []struct {
 		name         string
 		goos, goarch string
@@ -95,6 +106,16 @@
 				"st.go":    []byte(synctestBody),
 			},
 		},
+		{
+			name:     "jsonv2",
+			goos:     "linux",
+			goarch:   "amd64",
+			contents: jsonv2Contents,
+			want: map[string][]byte{
+				"plain.go": []byte(plainGoBody),
+				"json.go":  []byte(jsonv2Body),
+			},
+		},
 	} {
 		t.Run(test.name, func(t *testing.T) {
 			files := map[string][]byte{}
OSZAR »