Skip to content

Commit

Permalink
newTypesInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
visualfc committed Feb 1, 2023
1 parent 5f50b86 commit 24e8f30
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 52 deletions.
32 changes: 32 additions & 0 deletions context.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,38 @@ type sourcePackage struct {
Files []*ast.File
}

func (sp *sourcePackage) Load() (err error) {
if sp.Info == nil {
sp.Info = newTypesInfo()
conf := &types.Config{
Sizes: sp.Context.sizes,
Importer: NewImporter(sp.Context),
}
if sp.Context.evalMode || sp.Context.Mode&EnableNoStrict != 0 {
conf.DisableUnusedImportCheck = true
}
if sp.Context.Mode&EnableNoStrict != 0 {
conf.Error = func(e error) {
if te, ok := e.(types.Error); ok && strings.HasSuffix(te.Msg, errDeclNotUsed) {
println(fmt.Sprintf("igop warning: %v", e))
return
}
if err == nil {
err = e
}
}
} else {
conf.Error = func(e error) {
if err == nil {
err = e
}
}
}
types.NewChecker(conf, sp.Context.FileSet, sp.Package, sp.Info).Files(sp.Files)
}
return
}

// NewContext create a new Context
func NewContext(mode Mode) *Context {
ctx := &Context{
Expand Down
22 changes: 8 additions & 14 deletions types_go117.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,19 +50,13 @@ func (r *TypesRecord) LookupReflect(typ types.Type) (rt reflect.Type, ok bool, n
return
}

func (sp *sourcePackage) Load() (err error) {
if sp.Info == nil {
sp.Info = &types.Info{
Types: make(map[ast.Expr]types.TypeAndValue),
Defs: make(map[*ast.Ident]types.Object),
Uses: make(map[*ast.Ident]types.Object),
Implicits: make(map[ast.Node]types.Object),
Scopes: make(map[ast.Node]*types.Scope),
Selections: make(map[*ast.SelectorExpr]*types.Selection),
}
if err := types.NewChecker(sp.Context.conf, sp.Context.FileSet, sp.Package, sp.Info).Files(sp.Files); err != nil {
return err
}
func newTypesInfo() *types.Info {
return &types.Info{
Types: make(map[ast.Expr]types.TypeAndValue),
Defs: make(map[*ast.Ident]types.Object),
Uses: make(map[*ast.Ident]types.Object),
Implicits: make(map[ast.Node]types.Object),
Scopes: make(map[ast.Node]*types.Scope),
Selections: make(map[*ast.SelectorExpr]*types.Selection),
}
return
}
47 changes: 9 additions & 38 deletions types_go118.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package igop

import (
"fmt"
"go/ast"
"go/types"
"reflect"
Expand Down Expand Up @@ -148,42 +147,14 @@ func (r *TypesRecord) LookupReflect(typ types.Type) (rt reflect.Type, ok bool, n
return
}

func (sp *sourcePackage) Load() (err error) {
if sp.Info == nil {
sp.Info = &types.Info{
Types: make(map[ast.Expr]types.TypeAndValue),
Defs: make(map[*ast.Ident]types.Object),
Uses: make(map[*ast.Ident]types.Object),
Implicits: make(map[ast.Node]types.Object),
Scopes: make(map[ast.Node]*types.Scope),
Selections: make(map[*ast.SelectorExpr]*types.Selection),
Instances: make(map[*ast.Ident]types.Instance),
}
conf := &types.Config{
Sizes: sp.Context.sizes,
Importer: NewImporter(sp.Context),
}
if sp.Context.evalMode || sp.Context.Mode&EnableNoStrict != 0 {
conf.DisableUnusedImportCheck = true
}
if sp.Context.Mode&EnableNoStrict != 0 {
conf.Error = func(e error) {
if te, ok := e.(types.Error); ok && strings.HasSuffix(te.Msg, errDeclNotUsed) {
println(fmt.Sprintf("igop warning: %v", e))
return
}
if err == nil {
err = e
}
}
} else {
conf.Error = func(e error) {
if err == nil {
err = e
}
}
}
types.NewChecker(conf, sp.Context.FileSet, sp.Package, sp.Info).Files(sp.Files)
func newTypesInfo() *types.Info {
return &types.Info{
Types: make(map[ast.Expr]types.TypeAndValue),
Defs: make(map[*ast.Ident]types.Object),
Uses: make(map[*ast.Ident]types.Object),
Implicits: make(map[ast.Node]types.Object),
Scopes: make(map[ast.Node]*types.Scope),
Selections: make(map[*ast.SelectorExpr]*types.Selection),
Instances: make(map[*ast.Ident]types.Instance),
}
return
}

0 comments on commit 24e8f30

Please sign in to comment.