Skip to content

Commit 9eb1c70

Browse files
enable generics and remove overrides for generics
1 parent 5229e7f commit 9eb1c70

File tree

18 files changed

+27
-625
lines changed

18 files changed

+27
-625
lines changed

.github/workflows/ci.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ env:
1818
GO_VERSION: 1.19.13
1919
NODE_VERSION: 18
2020
GOLANGCI_VERSION: v1.53.3
21-
GOPHERJS_EXPERIMENT: generics
2221
SOURCE_MAP_SUPPORT: true
2322
GOPATH: ${{ github.workspace }}/go
2423
GOPHERJS_PATH: ${{ github.workspace }}/go/src/github.com/${{ github.repository }}

compiler/internal/typeparams/utils.go

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package typeparams
22

33
import (
4-
"errors"
5-
"fmt"
64
"go/token"
75
"go/types"
86
)
@@ -92,11 +90,6 @@ func FindNestingFunc(obj types.Object) *types.Func {
9290
return nil
9391
}
9492

95-
var (
96-
errInstantiatesGenerics = errors.New("instantiates generic type or function")
97-
errDefinesGenerics = errors.New("defines generic type or function")
98-
)
99-
10093
// HasTypeParams returns true if object defines type parameters.
10194
//
10295
// Note: this function doe not check if the object definition actually uses the
@@ -112,26 +105,6 @@ func HasTypeParams(typ types.Type) bool {
112105
}
113106
}
114107

115-
// RequiresGenericsSupport returns an error if the type-checked code depends on
116-
// generics support.
117-
func RequiresGenericsSupport(info *types.Info) error {
118-
for ident := range info.Instances {
119-
// Any instantiation means dependency on generics.
120-
return fmt.Errorf("%w: %v", errInstantiatesGenerics, info.ObjectOf(ident))
121-
}
122-
123-
for _, obj := range info.Defs {
124-
if obj == nil {
125-
continue
126-
}
127-
if HasTypeParams(obj.Type()) {
128-
return fmt.Errorf("%w: %v", errDefinesGenerics, obj)
129-
}
130-
}
131-
132-
return nil
133-
}
134-
135108
// isGeneric will search all the given types in `typ` and their subtypes for a
136109
// *types.TypeParam. This will not check if a type could be generic,
137110
// but if each instantiation is not completely concrete yet.

compiler/internal/typeparams/utils_test.go

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package typeparams
22

33
import (
4-
"errors"
54
"fmt"
65
"go/ast"
76
"go/token"
@@ -65,63 +64,6 @@ func TestHasTypeParams(t *testing.T) {
6564
}
6665
}
6766

68-
func TestRequiresGenericsSupport(t *testing.T) {
69-
t.Run("generic func", func(t *testing.T) {
70-
f := srctesting.New(t)
71-
src := `package foo
72-
func foo[T any](t T) {}`
73-
info, _ := f.Check("pkg/foo", f.Parse("foo.go", src))
74-
75-
err := RequiresGenericsSupport(info)
76-
if !errors.Is(err, errDefinesGenerics) {
77-
t.Errorf("Got: RequiresGenericsSupport() = %v. Want: %v", err, errDefinesGenerics)
78-
}
79-
})
80-
81-
t.Run("generic type", func(t *testing.T) {
82-
f := srctesting.New(t)
83-
src := `package foo
84-
type Foo[T any] struct{t T}`
85-
info, _ := f.Check("pkg/foo", f.Parse("foo.go", src))
86-
87-
err := RequiresGenericsSupport(info)
88-
if !errors.Is(err, errDefinesGenerics) {
89-
t.Errorf("Got: RequiresGenericsSupport() = %v. Want: %v", err, errDefinesGenerics)
90-
}
91-
})
92-
93-
t.Run("imported generic instance", func(t *testing.T) {
94-
f := srctesting.New(t)
95-
f.Info = nil // Do not combine type checking info from different packages.
96-
src1 := `package foo
97-
type Foo[T any] struct{t T}`
98-
f.Check("pkg/foo", f.Parse("foo.go", src1))
99-
100-
src2 := `package bar
101-
import "pkg/foo"
102-
func bar() { _ = foo.Foo[int]{} }`
103-
info, _ := f.Check("pkg/bar", f.Parse("bar.go", src2))
104-
105-
err := RequiresGenericsSupport(info)
106-
if !errors.Is(err, errInstantiatesGenerics) {
107-
t.Errorf("Got: RequiresGenericsSupport() = %v. Want: %v", err, errInstantiatesGenerics)
108-
}
109-
})
110-
111-
t.Run("no generic usage", func(t *testing.T) {
112-
f := srctesting.New(t)
113-
src := `package foo
114-
type Foo struct{}
115-
func foo() { _ = Foo{} }`
116-
info, _ := f.Check("pkg/foo", f.Parse("foo.go", src))
117-
118-
err := RequiresGenericsSupport(info)
119-
if err != nil {
120-
t.Errorf("Got: RequiresGenericsSupport() = %v. Want: nil", err)
121-
}
122-
})
123-
}
124-
12567
func Test_FindNestingFunc(t *testing.T) {
12668
src := `package main
12769

compiler/natives/src/crypto/elliptic/nistec.go

Lines changed: 0 additions & 80 deletions
This file was deleted.

compiler/natives/src/crypto/internal/nistec/nistec_test.go

Lines changed: 0 additions & 88 deletions
This file was deleted.

0 commit comments

Comments
 (0)