@@ -3766,13 +3766,10 @@ func (w *WhenClause) End() Pos {
37663766func (w * WhenClause ) String (level int ) string {
37673767 var builder strings.Builder
37683768 builder .WriteString ("WHEN " )
3769- builder .WriteString (NewLine (level + 1 ))
37703769 builder .WriteString (w .When .String (level ))
3771- builder .WriteString (NewLine (level + 1 ))
37723770 builder .WriteString (" THEN " )
37733771 builder .WriteString (w .Then .String (level ))
37743772 if w .Else != nil {
3775- builder .WriteString (NewLine (level + 1 ))
37763773 builder .WriteString (" ELSE " )
37773774 builder .WriteString (w .Else .String (level ))
37783775 }
@@ -3799,7 +3796,7 @@ func (w *WhenClause) Accept(visitor ASTVisitor) error {
37993796type CaseExpr struct {
38003797 CasePos Pos
38013798 EndPos Pos
3802- Expr Expr
3799+ Expr Expr // optional
38033800 Whens []* WhenClause
38043801 ElsePos Pos
38053802 Else Expr
@@ -3816,27 +3813,27 @@ func (c *CaseExpr) End() Pos {
38163813func (c * CaseExpr ) String (level int ) string {
38173814 var builder strings.Builder
38183815 builder .WriteString ("CASE " )
3819- builder .WriteString (NewLine (level ))
3820- builder .WriteString (c .Expr .String (level ))
3816+ if c .Expr != nil {
3817+ builder .WriteString (c .Expr .String (level ))
3818+ }
38213819 for _ , when := range c .Whens {
3822- builder .WriteString (NewLine (level ))
38233820 builder .WriteString (when .String (level ))
38243821 }
38253822 if c .Else != nil {
3826- builder .WriteString ("ELSE " )
3827- builder .WriteString (NewLine (level ))
3823+ builder .WriteString (" ELSE " )
38283824 builder .WriteString (c .Else .String (level ))
38293825 }
3830- builder .WriteString (NewLine (level ))
3831- builder .WriteString ("END" )
3826+ builder .WriteString (" END" )
38323827 return builder .String ()
38333828}
38343829
38353830func (c * CaseExpr ) Accept (visitor ASTVisitor ) error {
38363831 visitor .enter (c )
38373832 defer visitor .leave (c )
3838- if err := c .Expr .Accept (visitor ); err != nil {
3839- return err
3833+ if c .Expr != nil {
3834+ if err := c .Expr .Accept (visitor ); err != nil {
3835+ return err
3836+ }
38403837 }
38413838 for _ , when := range c .Whens {
38423839 if err := when .Accept (visitor ); err != nil {
0 commit comments