ExprList tests if the given expression is a static list construct and, if so, extracts the expressions that represent the list elements. If the given expression is not a static list, error diagnostics are returned. A particular Expression implementation can support this function by offering a metho
(expr Expression)
| 15 | // UnwrapExpression to delegate handling of this function to a wrapped |
| 16 | // Expression object. |
| 17 | func ExprList(expr Expression) ([]Expression, Diagnostics) { |
| 18 | type exprList interface { |
| 19 | ExprList() []Expression |
| 20 | } |
| 21 | |
| 22 | physExpr := UnwrapExpressionUntil(expr, func(expr Expression) bool { |
| 23 | _, supported := expr.(exprList) |
| 24 | return supported |
| 25 | }) |
| 26 | |
| 27 | if exL, supported := physExpr.(exprList); supported { |
| 28 | if list := exL.ExprList(); list != nil { |
| 29 | return list, nil |
| 30 | } |
| 31 | } |
| 32 | return nil, Diagnostics{ |
| 33 | &Diagnostic{ |
| 34 | Severity: DiagError, |
| 35 | Summary: "Invalid expression", |
| 36 | Detail: "A static list expression is required.", |
| 37 | Subject: expr.StartRange().Ptr(), |
| 38 | }, |
| 39 | } |
| 40 | } |
nothing calls this directly
no test coverage detected