You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
63 lines
2.3 KiB
63 lines
2.3 KiB
10 months ago
|
From 145caa8ea1d065cbc846dfd1a5602c914b97f9d8 Mon Sep 17 00:00:00 2001
|
||
|
From: Robert Findley <rfindley@google.com>
|
||
|
Date: Tue, 6 Sep 2022 18:32:29 -0400
|
||
|
Subject: [PATCH] x/exp/typeparams: use regexp to match wanted result
|
||
|
|
||
|
This is a port of CL 428055 to the external x/exp/typeparams package.
|
||
|
Also fix a stale test error message.
|
||
|
|
||
|
Fixes golang/go#54903
|
||
|
|
||
|
Change-Id: Iafa0df489e1d2bf7ce43f2e7854d87b2635e1f42
|
||
|
Reviewed-on: https://go-review.googlesource.com/c/exp/+/428875
|
||
|
TryBot-Result: Gopher Robot <gobot@golang.org>
|
||
|
Run-TryBot: Robert Findley <rfindley@google.com>
|
||
|
Auto-Submit: Robert Findley <rfindley@google.com>
|
||
|
Reviewed-by: Robert Griesemer <gri@google.com>
|
||
|
---
|
||
|
typeparams/normalize_test.go | 10 ++++++----
|
||
|
1 file changed, 6 insertions(+), 4 deletions(-)
|
||
|
|
||
|
diff --git a/typeparams/normalize_test.go b/typeparams/normalize_test.go
|
||
|
index dd47b57c..98f7ec46 100644
|
||
|
--- a/typeparams/normalize_test.go
|
||
|
+++ b/typeparams/normalize_test.go
|
||
|
@@ -9,6 +9,7 @@ import (
|
||
|
"go/parser"
|
||
|
"go/token"
|
||
|
"go/types"
|
||
|
+ "regexp"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
|
||
|
@@ -36,7 +37,7 @@ func TestNormalTerms(t *testing.T) {
|
||
|
{"package emptyintersection; type T[P interface{ ~int; string }] int", "", "empty type set"},
|
||
|
|
||
|
{"package embedded0; type T[P interface{ I }] int; type I interface { int }", "int", ""},
|
||
|
- {"package embedded1; type T[P interface{ I | string }] int; type I interface{ int | ~string }", "int|~string", ""},
|
||
|
+ {"package embedded1; type T[P interface{ I | string }] int; type I interface{ int | ~string }", "int ?\\| ?~string", ""},
|
||
|
{"package embedded2; type T[P interface{ I; string }] int; type I interface{ int | ~string }", "string", ""},
|
||
|
|
||
|
{"package named; type T[P C] int; type C interface{ ~int|int }", "~int", ""},
|
||
|
@@ -50,7 +51,7 @@ type B interface{ int|string }
|
||
|
type C interface { ~string|~int }
|
||
|
|
||
|
type T[P interface{ A|B; C }] int
|
||
|
-`, "~string|int", ""},
|
||
|
+`, "~string ?\\| ?int", ""},
|
||
|
}
|
||
|
|
||
|
for _, test := range tests {
|
||
|
@@ -94,8 +95,9 @@ type T[P interface{ A|B; C }] int
|
||
|
qf := types.RelativeTo(pkg)
|
||
|
got = types.TypeString(NewUnion(terms), qf)
|
||
|
}
|
||
|
- if got != test.want {
|
||
|
- t.Errorf("StructuralTerms(%s) = %q, want %q", T, got, test.want)
|
||
|
+ want := regexp.MustCompile(test.want)
|
||
|
+ if !want.MatchString(got) {
|
||
|
+ t.Errorf("NormalTerms(%s) = %q, want matching %q", T, got, test.want)
|
||
|
}
|
||
|
})
|
||
|
}
|