Skip to content

Commit c5e1578

Browse files
committed
cl/convert:mod instead Dir in Package
1 parent 168c99c commit c5e1578

File tree

6 files changed

+43
-25
lines changed

6 files changed

+43
-25
lines changed

cl/internal/convert/convert.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package convert
22

33
import (
4+
"fmt"
45
"log"
56
"strings"
67

78
"github.com/goplus/llcppg/ast"
89
cfg "github.com/goplus/llcppg/cmd/gogensig/config"
910
llconfig "github.com/goplus/llcppg/config"
11+
"github.com/goplus/mod/gopmod"
1012
)
1113

1214
type dbgFlags = int
@@ -72,18 +74,22 @@ type Converter struct {
7274
}
7375

7476
func NewConverter(config *Config) (*Converter, error) {
77+
mod, err := gopmod.Load(config.OutputDir)
78+
if err != nil {
79+
return nil, fmt.Errorf("failed to load mod: %w", err)
80+
}
7581
pkg, err := NewPackage(&PackageConfig{
7682
PkgBase: PkgBase{
7783
PkgPath: config.PkgPath,
7884
Deps: config.Deps,
7985
Pubs: config.TypeMap,
8086
},
8187
Name: config.PkgName,
82-
OutputDir: config.OutputDir,
8388
ConvSym: config.ConvSym,
8489
LibCommand: config.Libs,
8590
TrimPrefixes: config.TrimPrefixes,
8691
KeepUnderScore: config.KeepUnderScore,
92+
Mod: mod,
8793
})
8894
if err != nil {
8995
return nil, err

cl/internal/convert/convert_builtin_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@ func basicConverter() *Converter {
5050

5151
func TestPkgFail(t *testing.T) {
5252
converter := basicConverter()
53-
defer os.RemoveAll(converter.GenPkg.conf.OutputDir)
5453
t.Run("ProcessFail", func(t *testing.T) {
5554
defer func() {
5655
checkPanic(t, recover(), "File \"noexist.h\" not found in FileMap")

cl/internal/convert/package.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ type Package struct {
5050
type PackageConfig struct {
5151
PkgBase
5252
Name string // current package name
53-
OutputDir string
53+
Mod *gopmod.Module
5454
ConvSym func(name *ast.Object, mangleName string) (goName string, err error)
5555
GenConf *gogen.Config
5656
TrimPrefixes []string
@@ -87,15 +87,10 @@ func NewPackage(config *PackageConfig) (*Package, error) {
8787
config.Deps = append([]string{"c"}, config.Deps...)
8888
}
8989

90-
mod, err := gopmod.Load(config.OutputDir)
91-
if err != nil {
92-
return nil, fmt.Errorf("failed to load mod: %w", err)
93-
}
94-
9590
p.PkgInfo = NewPkgInfo(config.PkgPath, config.Deps, config.Pubs)
9691

97-
pkgManager := NewPkgDepLoader(mod, p.p)
98-
err = pkgManager.InitDeps(p.PkgInfo)
92+
pkgManager := NewPkgDepLoader(config.Mod, p.p)
93+
err := pkgManager.InitDeps(p.PkgInfo)
9994
if err != nil {
10095
return nil, fmt.Errorf("failed to init deps: %w", err)
10196
}

cl/internal/convert/package_bulitin_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,22 @@ import (
1111
"github.com/goplus/llcppg/cl/internal/cltest"
1212
llcppg "github.com/goplus/llcppg/config"
1313
ctoken "github.com/goplus/llcppg/token"
14+
"github.com/goplus/mod/gopmod"
1415
)
1516

1617
func emptyPkg() *Package {
18+
mod, err := gopmod.Load(".")
19+
if err != nil {
20+
panic(err)
21+
}
1722
pkg, err := NewPackage(&PackageConfig{
1823
PkgBase: PkgBase{
1924
PkgPath: ".",
2025
Pubs: make(map[string]string),
2126
},
2227
Name: "testpkg",
28+
Mod: mod,
2329
GenConf: &gogen.Config{},
24-
OutputDir: "",
2530
ConvSym: cltest.NewConvSym(),
2631
LibCommand: "${pkg-config --libs xxx}",
2732
})
@@ -156,17 +161,21 @@ func TestGetNameType(t *testing.T) {
156161
}
157162

158163
func TestTrimPrefixes(t *testing.T) {
164+
mod, err := gopmod.Load(".")
165+
if err != nil {
166+
panic(err)
167+
}
159168
pkg, err := NewPackage(&PackageConfig{
160169
PkgBase: PkgBase{
161170
PkgPath: ".",
162171
Pubs: make(map[string]string),
163172
},
164173
Name: "testpkg",
165174
GenConf: &gogen.Config{},
166-
OutputDir: "",
167175
ConvSym: cltest.NewConvSym(),
168176
TrimPrefixes: []string{"prefix1", "prefix2"},
169177
LibCommand: "${pkg-config --libs xxx}",
178+
Mod: mod,
170179
})
171180
if err != nil {
172181
t.Fatal("NewPackage failed:", err)

cl/internal/convert/package_test.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package convert_test
22

33
import (
44
"bytes"
5+
"fmt"
56
"os"
67
"strings"
78
"testing"
@@ -108,7 +109,6 @@ type U struct {
108109

109110
func TestToType(t *testing.T) {
110111
pkg, err := createTestPkg(&convert.PackageConfig{
111-
OutputDir: "",
112112
LibCommand: "${pkg-config --libs libcjson}",
113113
})
114114
if err != nil {
@@ -151,9 +151,7 @@ func TestToType(t *testing.T) {
151151
}
152152

153153
func TestToTypeFail(t *testing.T) {
154-
pkg, err := createTestPkg(&convert.PackageConfig{
155-
OutputDir: "",
156-
})
154+
pkg, err := createTestPkg(&convert.PackageConfig{})
157155
if err != nil {
158156
t.Fatal("NewPackage failed:", err)
159157
}
@@ -1081,7 +1079,6 @@ type Foo func(a c.Int, b c.Int) c.Int
10811079
// Test Redefine error
10821080
func TestRedef(t *testing.T) {
10831081
pkg, err := createTestPkg(&convert.PackageConfig{
1084-
OutputDir: "",
10851082
ConvSym: cltest.NewConvSym(
10861083
cltest.SymbolEntry{
10871084
CppName: "Bar", MangleName: "Bar", GoName: "Bar",
@@ -1710,7 +1707,6 @@ type Foo struct {
17101707

17111708
func TestForwardDecl(t *testing.T) {
17121709
pkg, err := createTestPkg(&convert.PackageConfig{
1713-
OutputDir: "",
17141710
ConvSym: cltest.NewConvSym(
17151711
cltest.SymbolEntry{
17161712
CppName: "Bar", MangleName: "Bar", GoName: "Bar",
@@ -1857,6 +1853,13 @@ func createTestPkg(cfg *convert.PackageConfig) (*convert.Package, error) {
18571853
if cfg.LibCommand == "" {
18581854
cfg.LibCommand = "${pkg-config --libs xxx}"
18591855
}
1856+
if cfg.Mod == nil {
1857+
mod, err := gopmod.Load(".")
1858+
if err != nil {
1859+
return nil, fmt.Errorf("failed to load mod: %w", err)
1860+
}
1861+
cfg.Mod = mod
1862+
}
18601863
return convert.NewPackage(&convert.PackageConfig{
18611864
PkgBase: convert.PkgBase{
18621865
PkgPath: ".",
@@ -1865,11 +1868,11 @@ func createTestPkg(cfg *convert.PackageConfig) (*convert.Package, error) {
18651868
},
18661869
Name: "testpkg",
18671870
GenConf: &gogen.Config{},
1868-
OutputDir: cfg.OutputDir,
18691871
ConvSym: cfg.ConvSym,
18701872
LibCommand: cfg.LibCommand,
18711873
TrimPrefixes: cfg.TrimPrefixes,
18721874
KeepUnderScore: cfg.KeepUnderScore,
1875+
Mod: cfg.Mod,
18731876
})
18741877
}
18751878

@@ -1893,7 +1896,6 @@ func comparePackageOutput(t *testing.T, pkg *convert.Package, expect string) {
18931896

18941897
func TestTypeClean(t *testing.T) {
18951898
pkg, err := createTestPkg(&convert.PackageConfig{
1896-
OutputDir: "",
18971899
ConvSym: cltest.NewConvSym(
18981900
cltest.SymbolEntry{CppName: "Func1", MangleName: "Func1", GoName: "Func1"},
18991901
cltest.SymbolEntry{CppName: "Func2", MangleName: "Func2", GoName: "Func2"},
@@ -2036,7 +2038,6 @@ func TestImport(t *testing.T) {
20362038
})
20372039
t.Run("invalid pub file", func(t *testing.T) {
20382040
_, err := createTestPkg(&convert.PackageConfig{
2039-
OutputDir: ".",
20402041
PkgBase: convert.PkgBase{
20412042
Deps: []string{
20422043
"github.com/goplus/llcppg/cl/internal/convert/testdata/invalidpub",
@@ -2049,7 +2050,6 @@ func TestImport(t *testing.T) {
20492050
})
20502051
t.Run("invalid dep", func(t *testing.T) {
20512052
_, err := createTestPkg(&convert.PackageConfig{
2052-
OutputDir: ".",
20532053
PkgBase: convert.PkgBase{
20542054
Deps: []string{
20552055
"github.com/goplus/llcppg/cl/internal/convert/testdata/invaliddep",
@@ -2062,7 +2062,6 @@ func TestImport(t *testing.T) {
20622062
})
20632063
t.Run("same type register", func(t *testing.T) {
20642064
_, err := createTestPkg(&convert.PackageConfig{
2065-
OutputDir: ".",
20662065
PkgBase: convert.PkgBase{
20672066
Deps: []string{
20682067
"github.com/goplus/llcppg/cl/internal/convert/testdata/cjson",
@@ -2086,11 +2085,16 @@ func TestUnkownHfile(t *testing.T) {
20862085
}
20872086

20882087
func TestNewPackageLinkFail(t *testing.T) {
2089-
_, err := convert.NewPackage(&convert.PackageConfig{
2088+
mod, err := gopmod.Load(".")
2089+
if err != nil {
2090+
t.Fatal(err)
2091+
}
2092+
_, err = convert.NewPackage(&convert.PackageConfig{
20902093
PkgBase: convert.PkgBase{
20912094
PkgPath: ".",
20922095
},
20932096
Name: "testpkg",
2097+
Mod: mod,
20942098
GenConf: &gogen.Config{},
20952099
})
20962100
if err == nil {

cl/internal/convert/type_builtin_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/goplus/gogen"
99
"github.com/goplus/llcppg/ast"
1010
"github.com/goplus/llcppg/cl/internal/cltest"
11+
"github.com/goplus/mod/gopmod"
1112
)
1213

1314
func TestIdentRef(t *testing.T) {
@@ -19,15 +20,19 @@ func TestIdentRef(t *testing.T) {
1920
}
2021

2122
func TestSubstObj(t *testing.T) {
23+
mod, err := gopmod.Load(".")
24+
if err != nil {
25+
panic(err)
26+
}
2227
pkg, err := NewPackage(&PackageConfig{
2328
PkgBase: PkgBase{
2429
PkgPath: ".",
2530
},
2631
Name: "testpkg",
2732
GenConf: &gogen.Config{},
28-
OutputDir: "",
2933
ConvSym: cltest.NewConvSym(),
3034
LibCommand: "${pkg-config --libs xxx}",
35+
Mod: mod,
3136
})
3237
if err != nil {
3338
t.Fatal("NewPackage failed")

0 commit comments

Comments
 (0)