code

package
Version: v0.0.1-2020.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2020 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package code answers structural and type questions about Go code.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BoolConst

func BoolConst(pass *analysis.Pass, expr ast.Expr) bool

func CallName

func CallName(call *ir.CallCommon) string

func CallNameAST

func CallNameAST(pass *analysis.Pass, call *ast.CallExpr) string

func Dereference

func Dereference(T types.Type) types.Type

Dereference returns a pointer's element type; otherwise it returns T.

func DereferenceR

func DereferenceR(T types.Type) types.Type

DereferenceR returns a pointer's element type; otherwise it returns T. If the element type is itself a pointer, DereferenceR will be applied recursively.

func ExprToInt

func ExprToInt(pass *analysis.Pass, expr ast.Expr) (int64, bool)

func ExprToString

func ExprToString(pass *analysis.Pass, expr ast.Expr) (string, bool)

func File

func File(pass *analysis.Pass, node Positioner) *ast.File

func FilterDebug

func FilterDebug(instr []ir.Instruction) []ir.Instruction

func Generator

func Generator(pass *analysis.Pass, pos token.Pos) (facts.Generator, bool)

Generator returns the generator that generated the file containing pos. It ignores //line directives.

func GroupSpecs

func GroupSpecs(fset *token.FileSet, specs []ast.Spec) [][]ast.Spec

func IsBlank

func IsBlank(id ast.Expr) bool

isBlank returns whether id is the blank identifier "_". If id == nil, the answer is false.

func IsBoolConst

func IsBoolConst(pass *analysis.Pass, expr ast.Expr) bool

func IsCallTo

func IsCallTo(call *ir.CallCommon, name string) bool

func IsCallToAST

func IsCallToAST(pass *analysis.Pass, node ast.Node, name string) bool

func IsCallToAny

func IsCallToAny(call *ir.CallCommon, names ...string) bool

func IsCallToAnyAST

func IsCallToAnyAST(pass *analysis.Pass, node ast.Node, names ...string) bool

func IsExample

func IsExample(fn *ir.Function) bool

func IsGenerated

func IsGenerated(pass *analysis.Pass, pos token.Pos) bool

IsGenerated reports whether pos is in a generated file, It ignores //line directives.

func IsGoVersion

func IsGoVersion(pass *analysis.Pass, minor int) bool

func IsIdent

func IsIdent(expr ast.Expr, ident string) bool

func IsInTest

func IsInTest(pass *analysis.Pass, node Positioner) bool

func IsIntLiteral

func IsIntLiteral(expr ast.Expr, literal string) bool

func IsMain

func IsMain(pass *analysis.Pass) bool

IsMain reports whether the package being processed is a package main.

func IsMainLike

func IsMainLike(pass *analysis.Pass) bool

IsMainLike reports whether the package being processed is a main-like package. A main-like package is a package that is package main, or that is intended to be used by a tool framework such as cobra to implement a command.

Note that this function errs on the side of false positives; it may return true for packages that aren't main-like. IsMainLike is intended for analyses that wish to suppress diagnostics for main-like packages to avoid false positives.

func IsNil

func IsNil(pass *analysis.Pass, expr ast.Expr) bool

func IsObject

func IsObject(obj types.Object, name string) bool

func IsOfType

func IsOfType(pass *analysis.Pass, expr ast.Expr, name string) bool

func IsPointerLike

func IsPointerLike(T types.Type) bool

func IsType

func IsType(T types.Type, name string) bool

OPT(dh): IsType is kind of expensive; should we really use it?

func IsZero deprecated

func IsZero(expr ast.Expr) bool

Deprecated: use IsIntLiteral instead

func MayHaveSideEffects

func MayHaveSideEffects(pass *analysis.Pass, expr ast.Expr, purity facts.PurityResult) bool

MayHaveSideEffects reports whether expr may have side effects. If the purity argument is nil, this function implements a purely syntactic check, meaning that any function call may have side effects, regardless of the called function's body. Otherwise, purity will be consulted to determine the purity of function calls.

func Preamble

func Preamble(f *ast.File) string

func Preorder

func Preorder(pass *analysis.Pass, fn func(ast.Node), types ...ast.Node)

func SelectorName

func SelectorName(pass *analysis.Pass, expr *ast.SelectorExpr) string

Types

type Field

type Field struct {
	Var  *types.Var
	Tag  string
	Path []int
}

func FlattenFields

func FlattenFields(T *types.Struct) []Field

FlattenFields recursively flattens T and embedded structs, returning a list of fields. If multiple fields with the same name exist, all will be returned.

type Positioner

type Positioner interface {
	Pos() token.Pos
}

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL