29
29
/// Use this instead of `precondition` in places where the assertion has a
30
30
/// non-trivial cost but provides little value in release builds.
31
31
@_transparent
32
- public func assert( _ condition: @autoclosure ( ) -> Bool , _ message: @autoclosure ( ) -> String = String ( ) , file: StaticString = #file, line: UInt = #line) {
32
+ public func assert(
33
+ _ condition: @autoclosure ( ) -> Bool ,
34
+ _ message: @autoclosure ( ) -> String = String ( ) ,
35
+ file: StaticString = #file,
36
+ line: UInt = #line
37
+ ) {
33
38
#if SWIFTSYNTAX_ENABLE_ASSERTIONS
34
39
if !_fastPath( condition ( ) ) {
35
40
fatalError ( message ( ) , file: file, line: line)
@@ -44,10 +49,34 @@ public func assert(_ condition: @autoclosure () -> Bool, _ message: @autoclosure
44
49
/// requested by setting the `SWIFTSYNTAX_ENABLE_ASSERTIONS` conditional
45
50
/// compilation flag.
46
51
@_transparent
47
- public func assertionFailure( _ message: @autoclosure ( ) -> String = String ( ) , file: StaticString = #file, line: UInt = #line) {
52
+ public func assertionFailure(
53
+ _ message: @autoclosure ( ) -> String = String ( ) ,
54
+ file: StaticString = #file,
55
+ line: UInt = #line
56
+ ) {
48
57
#if SWIFTSYNTAX_ENABLE_ASSERTIONS
49
58
fatalError ( message ( ) , file: file, line: line)
50
59
#else
51
60
Swift . assertionFailure ( message ( ) , file: file, line: line)
52
61
#endif
53
62
}
63
+
64
+ // MARK: - Precondition
65
+
66
+ /// Override Swift’s `precondition` with slightly changed semantics.
67
+ /// In release builds, it also emits the error message upon failure, like `fatalError`.
68
+ /// It can also be disabled by setting the `SWIFTSYNTAX_DISABLE_PRECONDITION` conditional compilation flag.
69
+ /// Note that `SWIFTSYNTAX_DISABLE_PRECONDITION` does not disable `preconditionFailure`.
70
+ @_transparent
71
+ public func precondition(
72
+ _ condition: @autoclosure ( ) -> Bool ,
73
+ _ message: @autoclosure ( ) -> String = String ( ) ,
74
+ file: StaticString = #file,
75
+ line: UInt = #line
76
+ ) {
77
+ #if !SWIFTSYNTAX_DISABLE_PRECONDITIONS
78
+ if !_fastPath( condition ( ) ) {
79
+ fatalError ( message ( ) , file: file, line: line)
80
+ }
81
+ #endif
82
+ }
0 commit comments