Indicates that an internal sanity check failed.


func assertionFailure(_ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line)



A string to print in a playground or -Onone build. The default is an empty string.


The file name to print with message. The default is the file where assertionFailure(_:file:line:) is called.


The line number to print along with message. The default is the line number where assertionFailure(_:file:line:) is called.


Use this function to stop the program, without impacting the performance of shipping code, when control flow is not expected to reach the call—for example, in the default case of a switch where you have knowledge that one of the other cases must be satisfied. To protect code from invalid usage in Release builds, see preconditionFailure(_:file:line:).

  • In playgrounds and -Onone builds (the default for Xcode’s Debug configuration), stop program execution in a debuggable state after printing message.

  • In -O builds, has no effect.

  • In -Ounchecked builds, the optimizer may assume that this function is never called. Failure to satisfy that assumption is a serious programming error.

See Also


func assert(() -> Bool, () -> String, file: StaticString, line: UInt)

Performs a traditional C-style assert with an optional message.

func precondition(() -> Bool, () -> String, file: StaticString, line: UInt)

Checks a necessary condition for making forward progress.