// 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 }