←back to thread

612 points dayanruben | 1 comments | | HN request time: 0.21s | source
Show context
alain_gilbert ◴[] No.42901749[source]
Swift is a really cool language.

But one thing that blows my mind is that if you ever encounter an "index out of range" error, the (massive) error message that you get doesn't tell you anything about where this error occurred... no line number... no nothing...

    let a = [1]
    print(a[1])
Is all you have to do to reproduce the error.

The error looks something like that https://pastebin.com/MQV82SaR

And gives you no useful information as to how it happened or how to fix it.

compare that with Golang which tells you, it happened in main.go at line 4.

    panic: runtime error: index out of range [1] with length 1
    
    goroutine 1 [running]:
    main.main()
     /Users/username/main.go:4 +0x15
    exit status 2
EDIT: with the LLVM_SYMBOLIZER_PATH set https://pastebin.com/8M9Dbrgj this doesn't provide anything useful either.
replies(8): >>42901838 #>>42901880 #>>42901928 #>>42903264 #>>42903913 #>>42906968 #>>42907652 #>>42944126 #
Pesthuf ◴[] No.42901880[source]
What if you follow the advice here

>Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):

?

replies(3): >>42902028 #>>42902455 #>>42902472 #
Cyph0n ◴[] No.42902028[source]
What if the error was more descriptive out of the box? Unless of course the goal is to just compete with C++ error reporting.
replies(1): >>42902349 #
1. catgary ◴[] No.42902349[source]
The goal is to probably avoid duplicating efforts when llvm-symbolize already exists.

There’s obviously a snarky comment to make here about Go developers and duplicating efforts.