Browse Source

Merge pull request #11 from mythi/nolegacy

drop legacy Go support
Tao Wen 4 năm trước cách đây
mục cha
commit
333559e183
9 tập tin đã thay đổi với 10 bổ sung93 xóa
  1. 1 1
      .travis.yml
  2. 1 7
      Gopkg.lock
  3. 0 4
      Gopkg.toml
  4. 0 8
      go_above_17.go
  5. 3 0
      go_above_19.go
  6. 0 9
      go_below_17.go
  7. 0 14
      go_below_19.go
  8. 3 3
      reflect2.go
  9. 2 47
      type_map.go

+ 1 - 1
.travis.yml

@@ -1,7 +1,7 @@
 language: go
 
 go:
-  - 1.8.x
+  - 1.9.x
   - 1.x
 
 before_install:

+ 1 - 7
Gopkg.lock

@@ -1,15 +1,9 @@
 # This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
 
 
-[[projects]]
-  name = "github.com/modern-go/concurrent"
-  packages = ["."]
-  revision = "e0a39a4cb4216ea8db28e22a69f4ec25610d513a"
-  version = "1.0.0"
-
 [solve-meta]
   analyzer-name = "dep"
   analyzer-version = 1
-  inputs-digest = "daee8a88b3498b61c5640056665b8b9eea062006f5e596bbb6a3ed9119a11ec7"
+  input-imports = []
   solver-name = "gps-cdcl"
   solver-version = 1

+ 0 - 4
Gopkg.toml

@@ -26,10 +26,6 @@
 
 ignored = []
 
-[[constraint]]
-  name = "github.com/modern-go/concurrent"
-  version = "1.0.0"
-
 [prune]
   go-tests = true
   unused-packages = true

+ 0 - 8
go_above_17.go

@@ -1,8 +0,0 @@
-//+build go1.7
-
-package reflect2
-
-import "unsafe"
-
-//go:linkname resolveTypeOff reflect.resolveTypeOff
-func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer

+ 3 - 0
go_above_19.go

@@ -6,6 +6,9 @@ import (
 	"unsafe"
 )
 
+//go:linkname resolveTypeOff reflect.resolveTypeOff
+func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer
+
 //go:linkname makemap reflect.makemap
 func makemap(rtype unsafe.Pointer, cap int) (m unsafe.Pointer)
 

+ 0 - 9
go_below_17.go

@@ -1,9 +0,0 @@
-//+build !go1.7
-
-package reflect2
-
-import "unsafe"
-
-func resolveTypeOff(rtype unsafe.Pointer, off int32) unsafe.Pointer {
-	return nil
-}

+ 0 - 14
go_below_19.go

@@ -1,14 +0,0 @@
-//+build !go1.9
-
-package reflect2
-
-import (
-	"unsafe"
-)
-
-//go:linkname makemap reflect.makemap
-func makemap(rtype unsafe.Pointer) (m unsafe.Pointer)
-
-func makeMapWithSize(rtype unsafe.Pointer, cap int) unsafe.Pointer {
-	return makemap(rtype)
-}

+ 3 - 3
reflect2.go

@@ -1,9 +1,9 @@
 package reflect2
 
 import (
-	"github.com/modern-go/concurrent"
 	"reflect"
 	"runtime"
+	"sync"
 	"unsafe"
 )
 
@@ -131,13 +131,13 @@ var ConfigSafe = Config{UseSafeImplementation: true}.Froze()
 
 type frozenConfig struct {
 	useSafeImplementation bool
-	cache                 *concurrent.Map
+	cache                 *sync.Map
 }
 
 func (cfg Config) Froze() *frozenConfig {
 	return &frozenConfig{
 		useSafeImplementation: cfg.UseSafeImplementation,
-		cache: concurrent.NewMap(),
+		cache:                 new(sync.Map),
 	}
 }
 

+ 2 - 47
type_map.go

@@ -4,16 +4,10 @@ package reflect2
 
 import (
 	"reflect"
-	"runtime"
-	"strings"
 	"sync"
 	"unsafe"
 )
 
-// typelinks1 for 1.5 ~ 1.6
-//go:linkname typelinks1 reflect.typelinks
-func typelinks1() [][]unsafe.Pointer
-
 // typelinks2 for 1.7 ~
 //go:linkname typelinks2 reflect.typelinks
 func typelinks2() (sections []unsafe.Pointer, offset [][]int32)
@@ -29,49 +23,10 @@ func discoverTypes() {
 	types = make(map[string]reflect.Type)
 	packages = make(map[string]map[string]reflect.Type)
 
-	ver := runtime.Version()
-	if ver == "go1.5" || strings.HasPrefix(ver, "go1.5.") {
-		loadGo15Types()
-	} else if ver == "go1.6" || strings.HasPrefix(ver, "go1.6.") {
-		loadGo15Types()
-	} else {
-		loadGo17Types()
-	}
-}
-
-func loadGo15Types() {
-	var obj interface{} = reflect.TypeOf(0)
-	typePtrss := typelinks1()
-	for _, typePtrs := range typePtrss {
-		for _, typePtr := range typePtrs {
-			(*emptyInterface)(unsafe.Pointer(&obj)).word = typePtr
-			typ := obj.(reflect.Type)
-			if typ.Kind() == reflect.Ptr && typ.Elem().Kind() == reflect.Struct {
-				loadedType := typ.Elem()
-				pkgTypes := packages[loadedType.PkgPath()]
-				if pkgTypes == nil {
-					pkgTypes = map[string]reflect.Type{}
-					packages[loadedType.PkgPath()] = pkgTypes
-				}
-				types[loadedType.String()] = loadedType
-				pkgTypes[loadedType.Name()] = loadedType
-			}
-			if typ.Kind() == reflect.Slice && typ.Elem().Kind() == reflect.Ptr &&
-				typ.Elem().Elem().Kind() == reflect.Struct {
-				loadedType := typ.Elem().Elem()
-				pkgTypes := packages[loadedType.PkgPath()]
-				if pkgTypes == nil {
-					pkgTypes = map[string]reflect.Type{}
-					packages[loadedType.PkgPath()] = pkgTypes
-				}
-				types[loadedType.String()] = loadedType
-				pkgTypes[loadedType.Name()] = loadedType
-			}
-		}
-	}
+	loadGoTypes()
 }
 
-func loadGo17Types() {
+func loadGoTypes() {
 	var obj interface{} = reflect.TypeOf(0)
 	sections, offset := typelinks2()
 	for i, offs := range offset {