From d82f9945b85fbf8c5859ed345c719cb67b548e38 Mon Sep 17 00:00:00 2001 From: xushiwei Date: Fri, 20 Oct 2023 01:26:17 +0800 Subject: [PATCH] gopmod.Default --- gopmod/module.go | 5 +++++ modfile/gop_test.go | 13 +++++++++++++ modfile/regtest_test.go | 13 +++++++++++++ modfile/rule.go | 3 +++ modload/module.go | 18 ++++++++++++++++++ 5 files changed, 52 insertions(+) create mode 100644 modfile/regtest_test.go diff --git a/gopmod/module.go b/gopmod/module.go index 33c5aba..fe584cc 100644 --- a/gopmod/module.go +++ b/gopmod/module.go @@ -222,3 +222,8 @@ func (e *MissingError) Error() string { } // ----------------------------------------------------------------------------- + +// Default represents the default gop.mod object. +var Default = New(modload.Default) + +// ----------------------------------------------------------------------------- diff --git a/modfile/gop_test.go b/modfile/gop_test.go index ef094e4..000053a 100644 --- a/modfile/gop_test.go +++ b/modfile/gop_test.go @@ -169,6 +169,19 @@ func TestGoModCompat2(t *testing.T) { } } +func TestGoModStd(t *testing.T) { + const ( + gopmod = "module std\n" + ) + f, err := ParseLax("go.mod", []byte(gopmod), nil) + if err != nil { + t.Fatal("modfile.ParseLax failed:", err) + } + if f.Module.Mod.Path != "" { + t.Fatal("modfile.ParseLax:", f.Module.Mod.Path) + } +} + // ----------------------------------------------------------------------------- func TestParse2(t *testing.T) { diff --git a/modfile/regtest_test.go b/modfile/regtest_test.go new file mode 100644 index 0000000..89e32a3 --- /dev/null +++ b/modfile/regtest_test.go @@ -0,0 +1,13 @@ +package modfile_test + +import ( + "testing" + + "github.com/goplus/mod/gopmod" +) + +func TestGopMod(t *testing.T) { + if path := gopmod.Default.Path(); path != "" { + t.Fatal("TestGopMod:", path) + } +} diff --git a/modfile/rule.go b/modfile/rule.go index 464faa3..0d80038 100644 --- a/modfile/rule.go +++ b/modfile/rule.go @@ -118,6 +118,9 @@ func parseToFile(file string, data []byte, fix VersionFixer, strict bool) (parse err = errors.NewWith(err, `modfile.ParseLax(file, data, fix)`, -2, "modfile.ParseLax", file, data, fix) return } + if mod := f.Module; mod != nil && mod.Mod.Path == "std" { + mod.Mod.Path = "" // the Go std module + } parsed = &File{File: *f} var errs ErrorList diff --git a/modload/module.go b/modload/module.go index df9a863..7accf02 100644 --- a/modload/module.go +++ b/modload/module.go @@ -266,3 +266,21 @@ func getVerb(e modfile.Expr) string { } // ----------------------------------------------------------------------------- + +const ( + defaultGoVer = "1.18" + defaultGopVer = "1.1" +) + +// Default represents the default gop.mod object. +var Default = Module{ + File: &modfile.File{ + File: gomodfile.File{ + Module: &gomodfile.Module{}, + Go: &gomodfile.Go{Version: defaultGoVer}, + }, + Gop: &modfile.Gop{Version: defaultGopVer}, + }, +} + +// -----------------------------------------------------------------------------