OXIESEC PANEL
- Current Dir:
/
/
opt
/
golang
/
1.19.4
/
src
/
go
/
internal
/
typeparams
Server IP: 2a02:4780:11:1084:0:327f:3464:10
Upload:
Create Dir:
Name
Size
Modified
Perms
📁
..
-
12/01/2022 06:13:56 PM
rwxr-xr-x
📄
common.go
586 bytes
12/01/2022 06:12:58 PM
rw-r--r--
📄
typeparams.go
1.18 KB
12/01/2022 06:12:58 PM
rw-r--r--
Editing: typeparams.go
Close
// Copyright 2021 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. package typeparams import ( "go/ast" "go/token" ) func PackIndexExpr(x ast.Expr, lbrack token.Pos, exprs []ast.Expr, rbrack token.Pos) ast.Expr { switch len(exprs) { case 0: panic("internal error: PackIndexExpr with empty expr slice") case 1: return &ast.IndexExpr{ X: x, Lbrack: lbrack, Index: exprs[0], Rbrack: rbrack, } default: return &ast.IndexListExpr{ X: x, Lbrack: lbrack, Indices: exprs, Rbrack: rbrack, } } } // IndexExpr wraps an ast.IndexExpr or ast.IndexListExpr. // // Orig holds the original ast.Expr from which this IndexExpr was derived. type IndexExpr struct { Orig ast.Expr // the wrapped expr, which may be distinct from the IndexListExpr below. *ast.IndexListExpr } func UnpackIndexExpr(n ast.Node) *IndexExpr { switch e := n.(type) { case *ast.IndexExpr: return &IndexExpr{e, &ast.IndexListExpr{ X: e.X, Lbrack: e.Lbrack, Indices: []ast.Expr{e.Index}, Rbrack: e.Rbrack, }} case *ast.IndexListExpr: return &IndexExpr{e, e} } return nil }