  	case constant:
  		typ = x.typ
  		val = x.val
-@@ -937,7 +953,9 @@
+@@ -947,7 +963,9 @@
  
  	switch e := e.(type) {
  	case *ast.BadExpr:

 		}
 
 		check.index(e.Index, length)
@@ -1190,7 +1226,9 @@
 	case *ast.SliceExpr:
 		check.expr(x, e.X)
 		if x.mode == invalid {

+				x.expr = e
+				return statement
 			}
 			x.typ = &Slice{elem: typ.elem}
 
@@ -1253,13 +1295,17 @@
 
 		if !valid {
 			check.invalidOp(x.pos(), "cannot slice %s", x)
