I wager there is type inference going on and that the IDE will supply red squiggly lines beneath the expression if the author were to supply something that would not one way or the other convert to the types that source can consume.
What will the compiler infer other than a value of type string?
> to supply something that would not one way or the other convert to the types that source can consume.
Well, clearly `source` takes a string, so it will happily accept "produckname" and blow up at run time.
Short of macros I know of no other compile time mechanism that would enable "safe" strings. The usual workaround is to not use plain string values at all and wrap in a sealed type.