aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/typeterm_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/compile/internal/types2/typeterm_test.go')
-rw-r--r--src/cmd/compile/internal/types2/typeterm_test.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/types2/typeterm_test.go b/src/cmd/compile/internal/types2/typeterm_test.go
index a8cc362f56..5a5c1fa447 100644
--- a/src/cmd/compile/internal/types2/typeterm_test.go
+++ b/src/cmd/compile/internal/types2/typeterm_test.go
@@ -9,6 +9,11 @@ import (
"testing"
)
+var myInt = func() Type {
+ tname := NewTypeName(nopos, nil, "myInt", nil)
+ return NewNamed(tname, Typ[Int], nil)
+}()
+
var testTerms = map[string]*term{
"∅": nil,
"𝓤": {},
@@ -16,7 +21,7 @@ var testTerms = map[string]*term{
"~int": {true, Typ[Int]},
"string": {false, Typ[String]},
"~string": {true, Typ[String]},
- // TODO(gri) add a defined type
+ "myInt": {false, myInt},
}
func TestTermString(t *testing.T) {
@@ -49,12 +54,16 @@ func TestTermEqual(t *testing.T) {
"𝓤 𝓤 T",
"int int T",
"~int ~int T",
+ "myInt myInt T",
"∅ 𝓤 F",
"∅ int F",
"∅ ~int F",
"𝓤 int F",
"𝓤 ~int F",
+ "𝓤 myInt F",
"int ~int F",
+ "int myInt F",
+ "~int myInt F",
} {
args := split(test, 3)
x := testTerm(args[0])
@@ -77,25 +86,33 @@ func TestTermUnion(t *testing.T) {
"∅ 𝓤 𝓤 ∅",
"∅ int int ∅",
"∅ ~int ~int ∅",
+ "∅ myInt myInt ∅",
"𝓤 𝓤 𝓤 ∅",
"𝓤 int 𝓤 ∅",
"𝓤 ~int 𝓤 ∅",
+ "𝓤 myInt 𝓤 ∅",
"int int int ∅",
"int ~int ~int ∅",
"int string int string",
"int ~string int ~string",
+ "int myInt int myInt",
"~int ~string ~int ~string",
+ "~int myInt ~int ∅",
// union is symmetric, but the result order isn't - repeat symmetric cases explictly
"𝓤 ∅ 𝓤 ∅",
"int ∅ int ∅",
"~int ∅ ~int ∅",
+ "myInt ∅ myInt ∅",
"int 𝓤 𝓤 ∅",
"~int 𝓤 𝓤 ∅",
+ "myInt 𝓤 𝓤 ∅",
"~int int ~int ∅",
"string int string int",
"~string int ~string int",
+ "myInt int myInt int",
"~string ~int ~string ~int",
+ "myInt ~int ~int ∅",
} {
args := split(test, 4)
x := testTerm(args[0])
@@ -114,14 +131,18 @@ func TestTermIntersection(t *testing.T) {
"∅ 𝓤 ∅",
"∅ int ∅",
"∅ ~int ∅",
+ "∅ myInt ∅",
"𝓤 𝓤 𝓤",
"𝓤 int int",
"𝓤 ~int ~int",
+ "𝓤 myInt myInt",
"int int int",
"int ~int int",
"int string ∅",
"int ~string ∅",
+ "int string ∅",
"~int ~string ∅",
+ "~int myInt myInt",
} {
args := split(test, 3)
x := testTerm(args[0])
@@ -144,8 +165,10 @@ func TestTermIncludes(t *testing.T) {
"𝓤 int T",
"int int T",
"~int int T",
+ "~int myInt T",
"string int F",
"~string int F",
+ "myInt int F",
} {
args := split(test, 3)
x := testTerm(args[0])
@@ -163,12 +186,19 @@ func TestTermSubsetOf(t *testing.T) {
"𝓤 𝓤 T",
"int int T",
"~int ~int T",
+ "myInt myInt T",
"∅ 𝓤 T",
"∅ int T",
"∅ ~int T",
+ "∅ myInt T",
"𝓤 int F",
"𝓤 ~int F",
+ "𝓤 myInt F",
"int ~int T",
+ "int myInt F",
+ "~int myInt F",
+ "myInt int F",
+ "myInt ~int T",
} {
args := split(test, 3)
x := testTerm(args[0])
@@ -187,7 +217,11 @@ func TestTermDisjoint(t *testing.T) {
"int ~int F",
"int string T",
"int ~string T",
+ "int myInt T",
"~int ~string T",
+ "~int myInt F",
+ "string myInt T",
+ "~string myInt T",
} {
args := split(test, 3)
x := testTerm(args[0])