pkgsite/internal/godoc/gen_ast.go

87 строки
1.8 KiB
Go

// Copyright 2020 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build ignore
// +build ignore
package main
import (
"fmt"
"go/ast"
"log"
"golang.org/x/pkgsite/internal/godoc"
"golang.org/x/pkgsite/internal/godoc/codec"
)
func main() {
types := []any{
ast.ArrayType{},
ast.AssignStmt{},
ast.BadDecl{},
ast.BadExpr{},
ast.BadStmt{},
ast.BasicLit{},
ast.BinaryExpr{},
ast.BlockStmt{},
ast.BranchStmt{},
ast.CallExpr{},
ast.CaseClause{},
ast.ChanType{},
ast.CommClause{},
ast.CommentGroup{},
ast.Comment{},
ast.CompositeLit{},
ast.DeclStmt{},
ast.DeferStmt{},
ast.Ellipsis{},
ast.EmptyStmt{},
ast.ExprStmt{},
ast.FieldList{},
ast.Field{},
ast.ForStmt{},
ast.FuncDecl{},
ast.FuncLit{},
ast.FuncType{},
ast.GenDecl{},
ast.GoStmt{},
ast.Ident{},
ast.IfStmt{},
ast.ImportSpec{},
ast.IncDecStmt{},
ast.IndexExpr{},
ast.IndexListExpr{},
ast.InterfaceType{},
ast.KeyValueExpr{},
ast.LabeledStmt{},
ast.MapType{},
ast.ParenExpr{},
ast.RangeStmt{},
ast.ReturnStmt{},
ast.Scope{},
ast.SelectStmt{},
ast.SelectorExpr{},
ast.SendStmt{},
ast.SliceExpr{},
ast.StarExpr{},
ast.StructType{},
ast.SwitchStmt{},
ast.TypeAssertExpr{},
ast.TypeSpec{},
ast.TypeSwitchStmt{},
ast.UnaryExpr{},
ast.ValueSpec{},
}
// Add in some unexported types in the godoc package. Since they are unexported, we can't
// write their names here, but the godoc package can provide us with values of those types,
// which the reflect package can examine.
types = append(types, godoc.TypesToGenerate...)
const filename = "encode_ast.gen.go"
if err := codec.GenerateFile(filename, "godoc", types...); err != nil {
log.Fatal(err)
}
fmt.Printf("Wrote %s.\n", filename)
}