x/vgo: fix the timestamp in a pseudo-version

Fixes golang/go#24369

Change-Id: Id1a30020609532bf232dddb574242d786e1c3ead
Reviewed-on: https://go-review.googlesource.com/106799
Reviewed-by: Russ Cox <rsc@golang.org>
diff --git a/vendor/cmd/go/internal/modfile/rule.go b/vendor/cmd/go/internal/modfile/rule.go
index fd0315b..8a69f10 100644
--- a/vendor/cmd/go/internal/modfile/rule.go
+++ b/vendor/cmd/go/internal/modfile/rule.go
@@ -252,16 +252,15 @@
 
 func parseVersion(path string, s *string, fix VersionFixer) (string, error) {
 	t := *s
-	if semver.IsValid(t) {
-		*s = semver.Canonical(t)
-		return *s, nil
-	}
 	if fix != nil {
-		t, err := fix(path, t)
+		var err error
+		t, err = fix(path, t)
 		if err != nil {
 			return "", err
 		}
-		*s = t
+	}
+	if semver.IsValid(t) {
+		*s = semver.Canonical(t)
 		return *s, nil
 	}
 	return "", fmt.Errorf("version must be of the form v1.2.3")