diff --git a/src/lexer.h b/src/lexer.h
index 86f68bc0a2d62e50226cebd96d571f5bd080ba91..7d983a6f6ff296cd0874af945ae5b638083bf40b 100644
--- a/src/lexer.h
+++ b/src/lexer.h
@@ -1088,9 +1088,6 @@ unknown_directive:
          They however conflict with valid ?: syntaxes.
       */
 
-      /* if( GOBBLE('[' ) ) */
-      /*   return TOK_SAFE_START_INDEX; */
-
       /* if( GOBBLE('.' ) ) */
       /*   return TOK_SAFE_INDEX; */
 
@@ -1099,12 +1096,16 @@ unknown_directive:
     case '~':
     case '@':
     case ')':
-    case '[':
 
     case '{':
     case ';':
     case '}': return c;
 
+    case '[':
+      if( GOBBLE('?' ) )
+        return TOK_SAFE_START_INDEX;
+      return c;
+
     case '`':
     {
       char *tmp;