Blob Blame History Raw
From dcba6827a0d2e3d52a41121a803f6364e7672a42 Mon Sep 17 00:00:00 2001
From: Michael McLoughlin <mmcloughlin@gmail.com>
Date: Sun, 5 Mar 2023 11:51:11 -0800
Subject: [PATCH] gotypes: handle change in error message in go 1.20

Uses a regular expression to handle the change in error message
introduced in:

https://github.com/golang/go/commit/2da95e0ec80cb7df1f89a7b7f147dde42ad17a19

Updates #367
---
 gotypes/signature_test.go | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/gotypes/signature_test.go b/gotypes/signature_test.go
index 03f8e9b3..ffb80a9d 100644
--- a/gotypes/signature_test.go
+++ b/gotypes/signature_test.go
@@ -3,7 +3,7 @@ package gotypes
 import (
 	"go/token"
 	"go/types"
-	"strings"
+	"regexp"
 	"testing"
 
 	"golang.org/x/tools/go/packages"
@@ -118,17 +118,22 @@ func TestParseSignature(t *testing.T) {
 
 func TestParseSignatureErrors(t *testing.T) {
 	cases := []struct {
-		Expr          string
-		ErrorContains string
+		Expr         string
+		ErrorPattern string
 	}{
-		{"idkjklol", "undeclared name"},
-		{"struct{}", "not a function signature"},
-		{"uint32(0xfeedbeef)", "should have nil value"},
+		{"idkjklol", `(undeclared|undefined)`},
+		{"struct{}", `not a function signature`},
+		{"uint32(0xfeedbeef)", `should have nil value`},
 	}
 	for _, c := range cases {
+		errrx, err := regexp.Compile(c.ErrorPattern)
+		if err != nil {
+			t.Fatal(err)
+		}
+
 		s, err := ParseSignature(c.Expr)
-		if s != nil || err == nil || !strings.Contains(err.Error(), c.ErrorContains) {
-			t.Errorf("expect error from expression %s\ngot: %s\nexpect substring: %s\n", c.Expr, err, c.ErrorContains)
+		if s != nil || err == nil || !errrx.MatchString(err.Error()) {
+			t.Errorf("expect error from expression %s\ngot: %s\nexpect match: %s\n", c.Expr, err, c.ErrorPattern)
 		}
 	}
 }