| Test of "too new" diagnostics from the stdversion analyzer. |
| |
| This test references go1.21 symbols from std, but the analyzer itself |
| depends on the go1.22 behavior of versions.FileVersion. |
| |
| See also go/analysis/passes/stdversion/testdata/test.txtar, |
| which runs the same test in the analysistest framework. |
| |
| -- flags -- |
| -min_go_command=go1.22 |
| |
| -- go.mod -- |
| module example.com |
| |
| go 1.21 |
| |
| -- a/a.go -- |
| package a |
| |
| import "go/types" |
| |
| func _() { |
| // old package-level type |
| var _ types.Info // ok: defined by go1.0 |
| |
| // new field of older type |
| _ = new(types.Info).FileVersions //@diag("FileVersions", re`types.FileVersions requires go1.22 or later \(module is go1.21\)`) |
| |
| // new method of older type |
| _ = new(types.Info).PkgNameOf //@diag("PkgNameOf", re`types.PkgNameOf requires go1.22 or later \(module is go1.21\)`) |
| |
| // new package-level type |
| var a types.Alias //@diag("Alias", re`types.Alias requires go1.22 or later \(module is go1.21\)`) |
| |
| // new method of new type |
| a.Underlying() // no diagnostic |
| } |
| |
| -- sub/go.mod -- |
| module example.com/sub |
| |
| go 1.21 |
| |
| -- sub/sub.go -- |
| package sub |
| |
| import "go/types" |
| |
| func _() { |
| // old package-level type |
| var _ types.Info // ok: defined by go1.0 |
| |
| // new field of older type |
| _ = new(types.Info).FileVersions //@diag("FileVersions", re`types.FileVersions requires go1.22 or later \(module is go1.21\)`) |
| |
| // new method of older type |
| _ = new(types.Info).PkgNameOf //@diag("PkgNameOf", re`types.PkgNameOf requires go1.22 or later \(module is go1.21\)`) |
| |
| // new package-level type |
| var a types.Alias //@diag("Alias", re`types.Alias requires go1.22 or later \(module is go1.21\)`) |
| |
| // new method of new type |
| a.Underlying() // no diagnostic |
| } |
| |
| -- sub/tagged.go -- |
| //go:build go1.22 |
| |
| package sub |
| |
| import "go/types" |
| |
| func _() { |
| // old package-level type |
| var _ types.Info |
| |
| // new field of older type |
| _ = new(types.Info).FileVersions |
| |
| // new method of older type |
| _ = new(types.Info).PkgNameOf |
| |
| // new package-level type |
| var a types.Alias |
| |
| // new method of new type |
| a.Underlying() |
| } |
| |