X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcmd%2Fcompile%2Finternal%2Ftypes2%2Fapi_test.go;h=56cddf6b29d4a7cb63b00a35e4523706b934486a;hb=56c91c05020408fbe18a8c511fc005c365f30d58;hp=a2621854bc4a1743cd2d6befeb7e5ecf03fbf92c;hpb=3073f3f9411737de2232e6f6d634c118b53aed22;p=gostls13.git diff --git a/src/cmd/compile/internal/types2/api_test.go b/src/cmd/compile/internal/types2/api_test.go index a2621854bc..56cddf6b29 100644 --- a/src/cmd/compile/internal/types2/api_test.go +++ b/src/cmd/compile/internal/types2/api_test.go @@ -8,6 +8,7 @@ import ( "cmd/compile/internal/syntax" "errors" "fmt" + "internal/goversion" "internal/testenv" "reflect" "regexp" @@ -2839,11 +2840,28 @@ var _ = f(1, 2) } } +func TestModuleVersion(t *testing.T) { + // version go1.dd must be able to typecheck go1.dd.0, go1.dd.1, etc. + goversion := fmt.Sprintf("go1.%d", goversion.Version) + for _, v := range []string{ + goversion, + goversion + ".0", + goversion + ".1", + goversion + ".rc", + } { + conf := Config{GoVersion: v} + pkg := mustTypecheck("package p", &conf, nil) + if pkg.GoVersion() != conf.GoVersion { + t.Errorf("got %s; want %s", pkg.GoVersion(), conf.GoVersion) + } + } +} + func TestFileVersions(t *testing.T) { for _, test := range []struct { - moduleVersion string - fileVersion string - wantVersion string + goVersion string + fileVersion string + wantVersion string }{ {"", "", ""}, // no versions specified {"go1.19", "", "go1.19"}, // module version specified @@ -2851,6 +2869,16 @@ func TestFileVersions(t *testing.T) { {"go1.19", "go1.20", "go1.20"}, // file upgrade permitted {"go1.20", "go1.19", "go1.20"}, // file downgrade not permitted {"go1.21", "go1.19", "go1.19"}, // file downgrade permitted (module version is >= go1.21) + + // versions containing release numbers + // (file versions containing release numbers are considered invalid) + {"go1.19.0", "", "go1.19.0"}, // no file version specified + {"go1.20", "go1.20.1", "go1.20"}, // file upgrade ignored + {"go1.20.1", "go1.20", "go1.20.1"}, // file upgrade ignored + {"go1.20.1", "go1.21", "go1.21"}, // file upgrade permitted + {"go1.20.1", "go1.19", "go1.20.1"}, // file downgrade not permitted + {"go1.21.1", "go1.19.1", "go1.21.1"}, // file downgrade not permitted (invalid file version) + {"go1.21.1", "go1.19", "go1.19"}, // file downgrade permitted (module version is >= go1.21) } { var src string if test.fileVersion != "" { @@ -2858,7 +2886,7 @@ func TestFileVersions(t *testing.T) { } src += "package p" - conf := Config{GoVersion: test.moduleVersion} + conf := Config{GoVersion: test.goVersion} versions := make(map[*syntax.PosBase]string) var info Info info.FileVersions = versions