Nim
                                
                                 Nim copied to clipboard
                                
                                    Nim copied to clipboard
                            
                            
                            
                        Const values don't short circuit.
If you have a const string it will not short-circuit and will not compile:
Example
const s1 = ""
if s1.len == 0 or s1[0] == '/':
  echo "root"
Current Output
Error: index out of bounds, the container is empty""[0]
Expected Output
root
I would expect it to work similar to let or var.
let s2 = ""
if s2.len == 0 or s2[0] == '/':
  echo "root"
var s3 = ""
if s3.len == 0 or s3[0] == '/':
  echo "root"
output:
root
root
That works fine.
The const make it work more like some sort of substitution:
if "".len == 0 or ""[0] == '/':
  echo "root"
output:
Error: index out of bounds, the container is emptys1[0]
Same thing happens with static values:
proc foo(s2: static string) =
  if s2.len == 0 or s2[0] == '/':
    echo "root"
foo ""
output:
Error: index out of bounds, the container is emptys1[0]
$ nim -v
Nim Compiler Version 1.7.1 [Linux: amd64]
Compiled at 2022-05-05
Copyright (c) 2006-2022 by Andreas Rumpf
git hash: 278ecad973c6581aeea0a6ff9372109b0dd6df5e
active boot switches: -d:release
Related issue: related https://github.com/nim-lang/Nim/issues/19492
See https://github.com/nim-lang/Nim/issues/14631 and https://github.com/nim-lang/Nim/pull/13541 as well
It seems very hard to make semcheck short circuir, I have no idea.