How do you gracefully stop the compiler? You can specify garbage to stop it, but is there a better way?
static:
  echo "compiling..."
proc display[T](message: T) =
  when not (T is string):
    compile error: "T is not a string"
  echo message
display[string]("hello")
# Test with and without this line.
# display[int](5)
The answer to my question in another thread lead to the answer to this one. Replace the "compile error" line with:
static:
  doAssert(false, "T is not a string")
The the doAssert will run at compile time.
static:
  echo "compiling..."
proc display[T](message: T) =
  when not (T is string):
    {.fatal: "T is not a string".}
  echo message
# works
display[string]("hello")
# fatal error, compilation aborted
# display[int](5)