From a17f23ecc3847675a05af28ee75e24b51c8330e1 Mon Sep 17 00:00:00 2001 From: Aofei Sheng Date: Wed, 12 Mar 2025 12:01:35 +0800 Subject: [PATCH] refactor(x/typesutil.Checker): handle `gogen.BoundTypeError` with fallback error logic Updates goplus/builder#1378 Signed-off-by: Aofei Sheng --- go.mod | 2 +- go.sum | 4 ++-- x/typesutil/check.go | 5 +++++ x/typesutil/check_test.go | 7 +++++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 46457c1da..4ad2fecf2 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.18 require ( github.com/fsnotify/fsnotify v1.8.0 - github.com/goplus/gogen v1.16.6 + github.com/goplus/gogen v1.16.7 github.com/goplus/llgo v0.10.0 github.com/goplus/mod v0.13.17 github.com/qiniu/x v1.13.12 diff --git a/go.sum b/go.sum index ea0775522..657b96bc7 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/goplus/gogen v1.16.6 h1:Zwv18HoTbPDk8s2ajxgVeqZE5i4/GMV722KHl6GS8Yk= -github.com/goplus/gogen v1.16.6/go.mod h1:6TQYbabXDF9LCdDkOOzHmfg1R4ENfXQ3XpHa9RhTSD8= +github.com/goplus/gogen v1.16.7 h1:OVN6byjWVtzs4plS7q80h747Jh8G7J+VUPN0L9YWQ68= +github.com/goplus/gogen v1.16.7/go.mod h1:6TQYbabXDF9LCdDkOOzHmfg1R4ENfXQ3XpHa9RhTSD8= github.com/goplus/llgo v0.10.0 h1:s3U3cnO3cploF1xCCJleAb16NQFAmHxdUmdrNhRH3hY= github.com/goplus/llgo v0.10.0/go.mod h1:YfOHsT/g3lc9b4GclLj812YzdSsJr0kd3CCB830TqHE= github.com/goplus/mod v0.13.17 h1:aWp14xosENrh7t0/0qcIejDmQEiTgI3ou2+KoLDlSlE= diff --git a/x/typesutil/check.go b/x/typesutil/check.go index 256e93750..875488db2 100644 --- a/x/typesutil/check.go +++ b/x/typesutil/check.go @@ -163,6 +163,8 @@ func (p *Checker) Files(goFiles []*goast.File, gopFiles []*ast.File) (err error) } } else if ce, ok := convErr(fset, err); ok { onErr(ce) + } else { + onErr(err) } } if debugPrintErr { @@ -246,6 +248,9 @@ func convErr(fset *token.FileSet, e error) (ret types.Error, ok bool) { case *gogen.ImportError: ret.Pos, ret.Msg = v.Pos, v.Err.Error() typesutil.SetErrorGo116(&ret, 0, v.Pos, v.Pos) + case *gogen.BoundTypeError: + ret.Pos, ret.Msg = v.Pos, v.Error() + typesutil.SetErrorGo116(&ret, 0, v.Pos, v.Pos) default: return } diff --git a/x/typesutil/check_test.go b/x/typesutil/check_test.go index 07da84462..871149548 100644 --- a/x/typesutil/check_test.go +++ b/x/typesutil/check_test.go @@ -181,6 +181,13 @@ println(pt) } _, _, err = checkFiles(fset, "main.gop", ` var i int = "hello" +`, "", "", "", "") + if err == nil { + t.Fatal("no error") + } + _, _, err = checkFiles(fset, "main.gop", ` +var nums []int +nums = append(nums, "NaN") `, "", "", "", "") if err == nil { t.Fatal("no error")