From 4a9055bb0e1c8f35d375b091b44edcff29a5e2a1 Mon Sep 17 00:00:00 2001 From: Jonathan Baldie Date: Thu, 14 May 2026 11:40:52 +0100 Subject: [PATCH 1/2] fix: set types.Config.Sizes to prevent nil pointer panic on Go 1.21+ Without Sizes set in the loader's TypeChecker, go/types.(*StdSizes).Sizeof dereferences a nil pointer on Go 1.21 and later, crashing go-mutesting immediately on any project. Closes #37. Co-Authored-By: Claude Sonnet 4.6 --- internal/parser/parse.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/parser/parse.go b/internal/parser/parse.go index 4072ba3..ff4b5c6 100644 --- a/internal/parser/parse.go +++ b/internal/parser/parse.go @@ -55,6 +55,9 @@ func ParseAndTypeCheckFile(file string, collectors []filter.NodeCollector) (*ast var conf = loader.Config{ ParserMode: parser.AllErrors | parser.ParseComments, + TypeChecker: types.Config{ + Sizes: types.SizesFor("gc", build.Default.GOARCH), + }, } if buildPkg.ImportPath != "." { From 40e1c458f988d70fae50a1ead0f9fbab920857d5 Mon Sep 17 00:00:00 2001 From: Jonathan Baldie Date: Thu, 14 May 2026 11:54:51 +0100 Subject: [PATCH 2/2] fix: guard against types.SizesFor returning nil types.SizesFor returns nil for unrecognised compiler/arch combinations; setting Sizes to nil would reproduce the same crash we are trying to prevent, so the value is only assigned when it is non-nil. Co-Authored-By: Claude Sonnet 4.6 --- internal/parser/parse.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/internal/parser/parse.go b/internal/parser/parse.go index ff4b5c6..d1f9ac9 100644 --- a/internal/parser/parse.go +++ b/internal/parser/parse.go @@ -53,11 +53,13 @@ func ParseAndTypeCheckFile(file string, collectors []filter.NodeCollector) (*ast return nil, nil, nil, nil, fmt.Errorf("Could not create build package of %q: %v", file, err) } + typeConf := types.Config{} + if sz := types.SizesFor("gc", build.Default.GOARCH); sz != nil { + typeConf.Sizes = sz + } var conf = loader.Config{ - ParserMode: parser.AllErrors | parser.ParseComments, - TypeChecker: types.Config{ - Sizes: types.SizesFor("gc", build.Default.GOARCH), - }, + ParserMode: parser.AllErrors | parser.ParseComments, + TypeChecker: typeConf, } if buildPkg.ImportPath != "." {