591 lines
18 KiB
Go
591 lines
18 KiB
Go
// Code generated by astcast_generate.go; DO NOT EDIT
|
|
|
|
// Package astcast wraps type assertion operations in such way that you don't have
|
|
// to worry about nil pointer results anymore.
|
|
package astcast
|
|
|
|
import (
|
|
"go/ast"
|
|
)
|
|
|
|
// A set of sentinel nil-like values that are returned
|
|
// by all "casting" functions in case of failed type assertion.
|
|
var (
|
|
NilArrayType = &ast.ArrayType{}
|
|
NilBadExpr = &ast.BadExpr{}
|
|
NilBasicLit = &ast.BasicLit{}
|
|
NilBinaryExpr = &ast.BinaryExpr{}
|
|
NilCallExpr = &ast.CallExpr{}
|
|
NilChanType = &ast.ChanType{}
|
|
NilCompositeLit = &ast.CompositeLit{}
|
|
NilEllipsis = &ast.Ellipsis{}
|
|
NilFuncLit = &ast.FuncLit{}
|
|
NilFuncType = &ast.FuncType{}
|
|
NilIdent = &ast.Ident{}
|
|
NilIndexExpr = &ast.IndexExpr{}
|
|
NilInterfaceType = &ast.InterfaceType{}
|
|
NilKeyValueExpr = &ast.KeyValueExpr{}
|
|
NilMapType = &ast.MapType{}
|
|
NilParenExpr = &ast.ParenExpr{}
|
|
NilSelectorExpr = &ast.SelectorExpr{}
|
|
NilSliceExpr = &ast.SliceExpr{}
|
|
NilStarExpr = &ast.StarExpr{}
|
|
NilStructType = &ast.StructType{}
|
|
NilTypeAssertExpr = &ast.TypeAssertExpr{}
|
|
NilUnaryExpr = &ast.UnaryExpr{}
|
|
NilAssignStmt = &ast.AssignStmt{}
|
|
NilBadStmt = &ast.BadStmt{}
|
|
NilBlockStmt = &ast.BlockStmt{}
|
|
NilBranchStmt = &ast.BranchStmt{}
|
|
NilCaseClause = &ast.CaseClause{}
|
|
NilCommClause = &ast.CommClause{}
|
|
NilDeclStmt = &ast.DeclStmt{}
|
|
NilDeferStmt = &ast.DeferStmt{}
|
|
NilEmptyStmt = &ast.EmptyStmt{}
|
|
NilExprStmt = &ast.ExprStmt{}
|
|
NilForStmt = &ast.ForStmt{}
|
|
NilGoStmt = &ast.GoStmt{}
|
|
NilIfStmt = &ast.IfStmt{}
|
|
NilIncDecStmt = &ast.IncDecStmt{}
|
|
NilLabeledStmt = &ast.LabeledStmt{}
|
|
NilRangeStmt = &ast.RangeStmt{}
|
|
NilReturnStmt = &ast.ReturnStmt{}
|
|
NilSelectStmt = &ast.SelectStmt{}
|
|
NilSendStmt = &ast.SendStmt{}
|
|
NilSwitchStmt = &ast.SwitchStmt{}
|
|
NilTypeSwitchStmt = &ast.TypeSwitchStmt{}
|
|
NilComment = &ast.Comment{}
|
|
NilCommentGroup = &ast.CommentGroup{}
|
|
NilFieldList = &ast.FieldList{}
|
|
NilFile = &ast.File{}
|
|
NilPackage = &ast.Package{}
|
|
)
|
|
|
|
// ToArrayType returns x as a non-nil *ast.ArrayType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilArrayType.
|
|
func ToArrayType(x ast.Node) *ast.ArrayType {
|
|
if x, ok := x.(*ast.ArrayType); ok {
|
|
return x
|
|
}
|
|
return NilArrayType
|
|
}
|
|
|
|
// ToBadExpr returns x as a non-nil *ast.BadExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBadExpr.
|
|
func ToBadExpr(x ast.Node) *ast.BadExpr {
|
|
if x, ok := x.(*ast.BadExpr); ok {
|
|
return x
|
|
}
|
|
return NilBadExpr
|
|
}
|
|
|
|
// ToBasicLit returns x as a non-nil *ast.BasicLit.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBasicLit.
|
|
func ToBasicLit(x ast.Node) *ast.BasicLit {
|
|
if x, ok := x.(*ast.BasicLit); ok {
|
|
return x
|
|
}
|
|
return NilBasicLit
|
|
}
|
|
|
|
// ToBinaryExpr returns x as a non-nil *ast.BinaryExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBinaryExpr.
|
|
func ToBinaryExpr(x ast.Node) *ast.BinaryExpr {
|
|
if x, ok := x.(*ast.BinaryExpr); ok {
|
|
return x
|
|
}
|
|
return NilBinaryExpr
|
|
}
|
|
|
|
// ToCallExpr returns x as a non-nil *ast.CallExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilCallExpr.
|
|
func ToCallExpr(x ast.Node) *ast.CallExpr {
|
|
if x, ok := x.(*ast.CallExpr); ok {
|
|
return x
|
|
}
|
|
return NilCallExpr
|
|
}
|
|
|
|
// ToChanType returns x as a non-nil *ast.ChanType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilChanType.
|
|
func ToChanType(x ast.Node) *ast.ChanType {
|
|
if x, ok := x.(*ast.ChanType); ok {
|
|
return x
|
|
}
|
|
return NilChanType
|
|
}
|
|
|
|
// ToCompositeLit returns x as a non-nil *ast.CompositeLit.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilCompositeLit.
|
|
func ToCompositeLit(x ast.Node) *ast.CompositeLit {
|
|
if x, ok := x.(*ast.CompositeLit); ok {
|
|
return x
|
|
}
|
|
return NilCompositeLit
|
|
}
|
|
|
|
// ToEllipsis returns x as a non-nil *ast.Ellipsis.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilEllipsis.
|
|
func ToEllipsis(x ast.Node) *ast.Ellipsis {
|
|
if x, ok := x.(*ast.Ellipsis); ok {
|
|
return x
|
|
}
|
|
return NilEllipsis
|
|
}
|
|
|
|
// ToFuncLit returns x as a non-nil *ast.FuncLit.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilFuncLit.
|
|
func ToFuncLit(x ast.Node) *ast.FuncLit {
|
|
if x, ok := x.(*ast.FuncLit); ok {
|
|
return x
|
|
}
|
|
return NilFuncLit
|
|
}
|
|
|
|
// ToFuncType returns x as a non-nil *ast.FuncType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilFuncType.
|
|
func ToFuncType(x ast.Node) *ast.FuncType {
|
|
if x, ok := x.(*ast.FuncType); ok {
|
|
return x
|
|
}
|
|
return NilFuncType
|
|
}
|
|
|
|
// ToIdent returns x as a non-nil *ast.Ident.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilIdent.
|
|
func ToIdent(x ast.Node) *ast.Ident {
|
|
if x, ok := x.(*ast.Ident); ok {
|
|
return x
|
|
}
|
|
return NilIdent
|
|
}
|
|
|
|
// ToIndexExpr returns x as a non-nil *ast.IndexExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilIndexExpr.
|
|
func ToIndexExpr(x ast.Node) *ast.IndexExpr {
|
|
if x, ok := x.(*ast.IndexExpr); ok {
|
|
return x
|
|
}
|
|
return NilIndexExpr
|
|
}
|
|
|
|
// ToInterfaceType returns x as a non-nil *ast.InterfaceType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilInterfaceType.
|
|
func ToInterfaceType(x ast.Node) *ast.InterfaceType {
|
|
if x, ok := x.(*ast.InterfaceType); ok {
|
|
return x
|
|
}
|
|
return NilInterfaceType
|
|
}
|
|
|
|
// ToKeyValueExpr returns x as a non-nil *ast.KeyValueExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilKeyValueExpr.
|
|
func ToKeyValueExpr(x ast.Node) *ast.KeyValueExpr {
|
|
if x, ok := x.(*ast.KeyValueExpr); ok {
|
|
return x
|
|
}
|
|
return NilKeyValueExpr
|
|
}
|
|
|
|
// ToMapType returns x as a non-nil *ast.MapType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilMapType.
|
|
func ToMapType(x ast.Node) *ast.MapType {
|
|
if x, ok := x.(*ast.MapType); ok {
|
|
return x
|
|
}
|
|
return NilMapType
|
|
}
|
|
|
|
// ToParenExpr returns x as a non-nil *ast.ParenExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilParenExpr.
|
|
func ToParenExpr(x ast.Node) *ast.ParenExpr {
|
|
if x, ok := x.(*ast.ParenExpr); ok {
|
|
return x
|
|
}
|
|
return NilParenExpr
|
|
}
|
|
|
|
// ToSelectorExpr returns x as a non-nil *ast.SelectorExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilSelectorExpr.
|
|
func ToSelectorExpr(x ast.Node) *ast.SelectorExpr {
|
|
if x, ok := x.(*ast.SelectorExpr); ok {
|
|
return x
|
|
}
|
|
return NilSelectorExpr
|
|
}
|
|
|
|
// ToSliceExpr returns x as a non-nil *ast.SliceExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilSliceExpr.
|
|
func ToSliceExpr(x ast.Node) *ast.SliceExpr {
|
|
if x, ok := x.(*ast.SliceExpr); ok {
|
|
return x
|
|
}
|
|
return NilSliceExpr
|
|
}
|
|
|
|
// ToStarExpr returns x as a non-nil *ast.StarExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilStarExpr.
|
|
func ToStarExpr(x ast.Node) *ast.StarExpr {
|
|
if x, ok := x.(*ast.StarExpr); ok {
|
|
return x
|
|
}
|
|
return NilStarExpr
|
|
}
|
|
|
|
// ToStructType returns x as a non-nil *ast.StructType.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilStructType.
|
|
func ToStructType(x ast.Node) *ast.StructType {
|
|
if x, ok := x.(*ast.StructType); ok {
|
|
return x
|
|
}
|
|
return NilStructType
|
|
}
|
|
|
|
// ToTypeAssertExpr returns x as a non-nil *ast.TypeAssertExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilTypeAssertExpr.
|
|
func ToTypeAssertExpr(x ast.Node) *ast.TypeAssertExpr {
|
|
if x, ok := x.(*ast.TypeAssertExpr); ok {
|
|
return x
|
|
}
|
|
return NilTypeAssertExpr
|
|
}
|
|
|
|
// ToUnaryExpr returns x as a non-nil *ast.UnaryExpr.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilUnaryExpr.
|
|
func ToUnaryExpr(x ast.Node) *ast.UnaryExpr {
|
|
if x, ok := x.(*ast.UnaryExpr); ok {
|
|
return x
|
|
}
|
|
return NilUnaryExpr
|
|
}
|
|
|
|
// ToAssignStmt returns x as a non-nil *ast.AssignStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilAssignStmt.
|
|
func ToAssignStmt(x ast.Node) *ast.AssignStmt {
|
|
if x, ok := x.(*ast.AssignStmt); ok {
|
|
return x
|
|
}
|
|
return NilAssignStmt
|
|
}
|
|
|
|
// ToBadStmt returns x as a non-nil *ast.BadStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBadStmt.
|
|
func ToBadStmt(x ast.Node) *ast.BadStmt {
|
|
if x, ok := x.(*ast.BadStmt); ok {
|
|
return x
|
|
}
|
|
return NilBadStmt
|
|
}
|
|
|
|
// ToBlockStmt returns x as a non-nil *ast.BlockStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBlockStmt.
|
|
func ToBlockStmt(x ast.Node) *ast.BlockStmt {
|
|
if x, ok := x.(*ast.BlockStmt); ok {
|
|
return x
|
|
}
|
|
return NilBlockStmt
|
|
}
|
|
|
|
// ToBranchStmt returns x as a non-nil *ast.BranchStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilBranchStmt.
|
|
func ToBranchStmt(x ast.Node) *ast.BranchStmt {
|
|
if x, ok := x.(*ast.BranchStmt); ok {
|
|
return x
|
|
}
|
|
return NilBranchStmt
|
|
}
|
|
|
|
// ToCaseClause returns x as a non-nil *ast.CaseClause.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilCaseClause.
|
|
func ToCaseClause(x ast.Node) *ast.CaseClause {
|
|
if x, ok := x.(*ast.CaseClause); ok {
|
|
return x
|
|
}
|
|
return NilCaseClause
|
|
}
|
|
|
|
// ToCommClause returns x as a non-nil *ast.CommClause.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilCommClause.
|
|
func ToCommClause(x ast.Node) *ast.CommClause {
|
|
if x, ok := x.(*ast.CommClause); ok {
|
|
return x
|
|
}
|
|
return NilCommClause
|
|
}
|
|
|
|
// ToDeclStmt returns x as a non-nil *ast.DeclStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilDeclStmt.
|
|
func ToDeclStmt(x ast.Node) *ast.DeclStmt {
|
|
if x, ok := x.(*ast.DeclStmt); ok {
|
|
return x
|
|
}
|
|
return NilDeclStmt
|
|
}
|
|
|
|
// ToDeferStmt returns x as a non-nil *ast.DeferStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilDeferStmt.
|
|
func ToDeferStmt(x ast.Node) *ast.DeferStmt {
|
|
if x, ok := x.(*ast.DeferStmt); ok {
|
|
return x
|
|
}
|
|
return NilDeferStmt
|
|
}
|
|
|
|
// ToEmptyStmt returns x as a non-nil *ast.EmptyStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilEmptyStmt.
|
|
func ToEmptyStmt(x ast.Node) *ast.EmptyStmt {
|
|
if x, ok := x.(*ast.EmptyStmt); ok {
|
|
return x
|
|
}
|
|
return NilEmptyStmt
|
|
}
|
|
|
|
// ToExprStmt returns x as a non-nil *ast.ExprStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilExprStmt.
|
|
func ToExprStmt(x ast.Node) *ast.ExprStmt {
|
|
if x, ok := x.(*ast.ExprStmt); ok {
|
|
return x
|
|
}
|
|
return NilExprStmt
|
|
}
|
|
|
|
// ToForStmt returns x as a non-nil *ast.ForStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilForStmt.
|
|
func ToForStmt(x ast.Node) *ast.ForStmt {
|
|
if x, ok := x.(*ast.ForStmt); ok {
|
|
return x
|
|
}
|
|
return NilForStmt
|
|
}
|
|
|
|
// ToGoStmt returns x as a non-nil *ast.GoStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilGoStmt.
|
|
func ToGoStmt(x ast.Node) *ast.GoStmt {
|
|
if x, ok := x.(*ast.GoStmt); ok {
|
|
return x
|
|
}
|
|
return NilGoStmt
|
|
}
|
|
|
|
// ToIfStmt returns x as a non-nil *ast.IfStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilIfStmt.
|
|
func ToIfStmt(x ast.Node) *ast.IfStmt {
|
|
if x, ok := x.(*ast.IfStmt); ok {
|
|
return x
|
|
}
|
|
return NilIfStmt
|
|
}
|
|
|
|
// ToIncDecStmt returns x as a non-nil *ast.IncDecStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilIncDecStmt.
|
|
func ToIncDecStmt(x ast.Node) *ast.IncDecStmt {
|
|
if x, ok := x.(*ast.IncDecStmt); ok {
|
|
return x
|
|
}
|
|
return NilIncDecStmt
|
|
}
|
|
|
|
// ToLabeledStmt returns x as a non-nil *ast.LabeledStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilLabeledStmt.
|
|
func ToLabeledStmt(x ast.Node) *ast.LabeledStmt {
|
|
if x, ok := x.(*ast.LabeledStmt); ok {
|
|
return x
|
|
}
|
|
return NilLabeledStmt
|
|
}
|
|
|
|
// ToRangeStmt returns x as a non-nil *ast.RangeStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilRangeStmt.
|
|
func ToRangeStmt(x ast.Node) *ast.RangeStmt {
|
|
if x, ok := x.(*ast.RangeStmt); ok {
|
|
return x
|
|
}
|
|
return NilRangeStmt
|
|
}
|
|
|
|
// ToReturnStmt returns x as a non-nil *ast.ReturnStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilReturnStmt.
|
|
func ToReturnStmt(x ast.Node) *ast.ReturnStmt {
|
|
if x, ok := x.(*ast.ReturnStmt); ok {
|
|
return x
|
|
}
|
|
return NilReturnStmt
|
|
}
|
|
|
|
// ToSelectStmt returns x as a non-nil *ast.SelectStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilSelectStmt.
|
|
func ToSelectStmt(x ast.Node) *ast.SelectStmt {
|
|
if x, ok := x.(*ast.SelectStmt); ok {
|
|
return x
|
|
}
|
|
return NilSelectStmt
|
|
}
|
|
|
|
// ToSendStmt returns x as a non-nil *ast.SendStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilSendStmt.
|
|
func ToSendStmt(x ast.Node) *ast.SendStmt {
|
|
if x, ok := x.(*ast.SendStmt); ok {
|
|
return x
|
|
}
|
|
return NilSendStmt
|
|
}
|
|
|
|
// ToSwitchStmt returns x as a non-nil *ast.SwitchStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilSwitchStmt.
|
|
func ToSwitchStmt(x ast.Node) *ast.SwitchStmt {
|
|
if x, ok := x.(*ast.SwitchStmt); ok {
|
|
return x
|
|
}
|
|
return NilSwitchStmt
|
|
}
|
|
|
|
// ToTypeSwitchStmt returns x as a non-nil *ast.TypeSwitchStmt.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilTypeSwitchStmt.
|
|
func ToTypeSwitchStmt(x ast.Node) *ast.TypeSwitchStmt {
|
|
if x, ok := x.(*ast.TypeSwitchStmt); ok {
|
|
return x
|
|
}
|
|
return NilTypeSwitchStmt
|
|
}
|
|
|
|
// ToComment returns x as a non-nil *ast.Comment.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilComment.
|
|
func ToComment(x ast.Node) *ast.Comment {
|
|
if x, ok := x.(*ast.Comment); ok {
|
|
return x
|
|
}
|
|
return NilComment
|
|
}
|
|
|
|
// ToCommentGroup returns x as a non-nil *ast.CommentGroup.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilCommentGroup.
|
|
func ToCommentGroup(x ast.Node) *ast.CommentGroup {
|
|
if x, ok := x.(*ast.CommentGroup); ok {
|
|
return x
|
|
}
|
|
return NilCommentGroup
|
|
}
|
|
|
|
// ToFieldList returns x as a non-nil *ast.FieldList.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilFieldList.
|
|
func ToFieldList(x ast.Node) *ast.FieldList {
|
|
if x, ok := x.(*ast.FieldList); ok {
|
|
return x
|
|
}
|
|
return NilFieldList
|
|
}
|
|
|
|
// ToFile returns x as a non-nil *ast.File.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilFile.
|
|
func ToFile(x ast.Node) *ast.File {
|
|
if x, ok := x.(*ast.File); ok {
|
|
return x
|
|
}
|
|
return NilFile
|
|
}
|
|
|
|
// ToPackage returns x as a non-nil *ast.Package.
|
|
// If ast.Node actually has such dynamic type, the result is
|
|
// identical to normal type assertion. In case if it has
|
|
// different type, the returned value is NilPackage.
|
|
func ToPackage(x ast.Node) *ast.Package {
|
|
if x, ok := x.(*ast.Package); ok {
|
|
return x
|
|
}
|
|
return NilPackage
|
|
}
|