github.com/goplus/gop@v1.2.6/x/typesutil/api.go (about)

     1  /*
     2   * Copyright (c) 2023 The GoPlus Authors (goplus.org). All rights reserved.
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   */
    16  
    17  package typesutil
    18  
    19  import (
    20  	"go/types"
    21  
    22  	"github.com/goplus/gop/ast"
    23  	"github.com/goplus/gop/token"
    24  )
    25  
    26  // A CheckConfig specifies the configuration for type checking.
    27  // The zero value for Config is a ready-to-use default configuration.
    28  type CheckConfig types.Config
    29  
    30  // Check type-checks a package and returns the resulting package object and
    31  // the first error if any. Additionally, if info != nil, Check populates each
    32  // of the non-nil maps in the Info struct.
    33  //
    34  // The package is marked as complete if no errors occurred, otherwise it is
    35  // incomplete. See Config.Error for controlling behavior in the presence of
    36  // errors.
    37  //
    38  // The package is specified by a list of *ast.Files and corresponding
    39  // file set, and the package path the package is identified with.
    40  // The clean path must not be empty or dot (".").
    41  func (conf *CheckConfig) Check(path string, fset *token.FileSet, files []*ast.File, info *Info) (ret *types.Package, err error) {
    42  	ret = types.NewPackage(path, "")
    43  	c := NewChecker((*types.Config)(conf), &Config{Types: ret, Fset: fset}, nil, info)
    44  	err = c.Files(nil, files)
    45  	return
    46  }