[swift-evolution] Compile time assertion / checking?

Jens Persson jens at bitcycle.com
Mon Dec 21 10:16:28 CST 2015


Sorry if this has been asked before (searched but couldn't find anything).
I'll explain what I mean by an example of a situation where I think it
would be reasonable to expect a compile time error rather than the current
runtime error:

import simd
let a: float4 = [1, 2, 3]
print(a)

The SIMD float4 type conforms to ArrayLiteralConvertible, and the required
initializer has a check that makes sure the array literal has 4 elements.
The check can only be performed at runtime even though the number of
elements of that array literal is (presumably) statically knowable, as is
the number it is checked against (i.e. it probably ends up being an integer
literal 4 somewhere (although I haven't actually checked the code)).

I assume that there are good reasons for why this is currently a runtime
check, but I'd like to know what these reasons are, i.e. why isn't there
something like C++'s static_assert?

Any pointers to previous discussions or information about how Swift relates
to this and similar topics (static computation / constexpr, macro system)
would be highly appreciated.

/Jens
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151221/80bdc6d0/attachment.html>


More information about the swift-evolution mailing list