Skip to content

Commit 14dc03c

Browse files
authored
safeexpr: add SliceExpr and nil handling
1 parent edc57c5 commit 14dc03c

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

safeExpr.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ func SideEffectFree(info *types.Info, expr ast.Expr) bool {
2020
// whitelist to be on the conservative side.
2121
// Can be extended as needed.
2222

23+
if expr == nil {
24+
return true
25+
}
26+
2327
switch expr := expr.(type) {
2428
case *ast.StarExpr:
2529
return SideEffectFree(info, expr.X)
@@ -31,6 +35,11 @@ func SideEffectFree(info *types.Info, expr ast.Expr) bool {
3135
SideEffectFree(info, expr.X)
3236
case *ast.BasicLit, *ast.Ident:
3337
return true
38+
case *ast.SliceExpr:
39+
return SideEffectFree(info, expr.X) &&
40+
SideEffectFree(info, expr.Low) &&
41+
SideEffectFree(info, expr.High) &&
42+
SideEffectFree(info, expr.Max)
3443
case *ast.IndexExpr:
3544
return SideEffectFree(info, expr.X) &&
3645
SideEffectFree(info, expr.Index)

0 commit comments

Comments
 (0)