Skip to content

Commit 62e3d58

Browse files
author
Mike Ferris
committed
Merge pull request #913 from kovpas/xctest_autoclosure_message
[XCTest] Add @autoclosure to message parameter, so it's constructed only if it's needed
2 parents f5f796b + e0c6ac1 commit 62e3d58

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

stdlib/public/SDK/XCTest/XCTest.swift

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ import CoreGraphics
2020
// --- Failure Formatting ---
2121

2222
/// Register the failure, expected or unexpected, of the current test case.
23-
func _XCTRegisterFailure(expected: Bool, _ condition: String, _ message: String, _ file: StaticString, _ line: UInt) -> Void {
23+
func _XCTRegisterFailure(expected: Bool, _ condition: String, @autoclosure _ message: () -> String, _ file: StaticString, _ line: UInt) -> Void {
2424
// Call the real _XCTFailureHandler.
2525
let test = _XCTCurrentTestCaseBridge()
26-
_XCTPreformattedFailureHandler(test, expected, file.stringValue, line, condition, message)
26+
_XCTPreformattedFailureHandler(test, expected, file.stringValue, line, condition, message())
2727
}
2828

2929
/// Produce a failure description for the given assertion type.
@@ -79,7 +79,7 @@ public func XCTFail(message: String = "", file: StaticString = __FILE__, line: U
7979
_XCTRegisterFailure(true, _XCTFailureDescription(assertionType, 0, "" as NSString), message, file, line)
8080
}
8181

82-
public func XCTAssertNil(@autoclosure expression: () -> Any?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
82+
public func XCTAssertNil(@autoclosure expression: () -> Any?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
8383
let assertionType = _XCTAssertionType.Nil
8484

8585
// evaluate the expression exactly once
@@ -115,7 +115,7 @@ public func XCTAssertNil(@autoclosure expression: () -> Any?, _ message: String
115115
}
116116
}
117117

118-
public func XCTAssertNotNil(@autoclosure expression: () -> Any?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
118+
public func XCTAssertNotNil(@autoclosure expression: () -> Any?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
119119
let assertionType = _XCTAssertionType.NotNil
120120

121121
// evaluate the expression exactly once
@@ -151,12 +151,12 @@ public func XCTAssertNotNil(@autoclosure expression: () -> Any?, _ message: Stri
151151
}
152152
}
153153

154-
public func XCTAssert( @autoclosure expression: () -> BooleanType, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
154+
public func XCTAssert( @autoclosure expression: () -> BooleanType, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
155155
// XCTAssert is just a cover for XCTAssertTrue.
156156
XCTAssertTrue(expression, message, file: file, line: line)
157157
}
158158

159-
public func XCTAssertTrue(@autoclosure expression: () -> BooleanType, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
159+
public func XCTAssertTrue(@autoclosure expression: () -> BooleanType, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
160160
let assertionType = _XCTAssertionType.True
161161

162162
// evaluate the expression exactly once
@@ -184,7 +184,7 @@ public func XCTAssertTrue(@autoclosure expression: () -> BooleanType, _ message:
184184
}
185185
}
186186

187-
public func XCTAssertFalse(@autoclosure expression: () -> BooleanType, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
187+
public func XCTAssertFalse(@autoclosure expression: () -> BooleanType, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
188188
let assertionType = _XCTAssertionType.False
189189

190190
// evaluate the expression exactly once
@@ -212,7 +212,7 @@ public func XCTAssertFalse(@autoclosure expression: () -> BooleanType, _ message
212212
}
213213
}
214214

215-
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> T?, @autoclosure _ expression2: () -> T?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
215+
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> T?, @autoclosure _ expression2: () -> T?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
216216
let assertionType = _XCTAssertionType.Equal
217217

218218
// evaluate each expression exactly once
@@ -250,7 +250,7 @@ public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> T?, @a
250250
// Array<T>
251251
// Dictionary<T, U>
252252

253-
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> ArraySlice<T>, @autoclosure _ expression2: () -> ArraySlice<T>, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
253+
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> ArraySlice<T>, @autoclosure _ expression2: () -> ArraySlice<T>, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
254254
let assertionType = _XCTAssertionType.Equal
255255

256256
// evaluate each expression exactly once
@@ -285,7 +285,7 @@ public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> ArrayS
285285
}
286286
}
287287

288-
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> ContiguousArray<T>, @autoclosure _ expression2: () -> ContiguousArray<T>, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
288+
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> ContiguousArray<T>, @autoclosure _ expression2: () -> ContiguousArray<T>, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
289289
let assertionType = _XCTAssertionType.Equal
290290

291291
// evaluate each expression exactly once
@@ -320,7 +320,7 @@ public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> Contig
320320
}
321321
}
322322

323-
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> [T], @autoclosure _ expression2: () -> [T], _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
323+
public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> [T], @autoclosure _ expression2: () -> [T], @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
324324
let assertionType = _XCTAssertionType.Equal
325325

326326
// evaluate each expression exactly once
@@ -355,7 +355,7 @@ public func XCTAssertEqual<T : Equatable>(@autoclosure expression1: () -> [T], @
355355
}
356356
}
357357

358-
public func XCTAssertEqual<T, U : Equatable>(@autoclosure expression1: () -> [T: U], @autoclosure _ expression2: () -> [T: U], _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
358+
public func XCTAssertEqual<T, U : Equatable>(@autoclosure expression1: () -> [T: U], @autoclosure _ expression2: () -> [T: U], @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
359359
let assertionType = _XCTAssertionType.Equal
360360

361361
// evaluate each expression exactly once
@@ -390,7 +390,7 @@ public func XCTAssertEqual<T, U : Equatable>(@autoclosure expression1: () -> [T:
390390
}
391391
}
392392

393-
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> T?, @autoclosure _ expression2: () -> T?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
393+
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> T?, @autoclosure _ expression2: () -> T?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
394394
let assertionType = _XCTAssertionType.NotEqual
395395

396396
// evaluate each expression exactly once
@@ -428,7 +428,7 @@ public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> T?,
428428
// Array<T>
429429
// Dictionary<T, U>
430430

431-
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> ContiguousArray<T>, @autoclosure _ expression2: () -> ContiguousArray<T>, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
431+
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> ContiguousArray<T>, @autoclosure _ expression2: () -> ContiguousArray<T>, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
432432
let assertionType = _XCTAssertionType.NotEqual
433433

434434
// evaluate each expression exactly once
@@ -463,7 +463,7 @@ public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> Con
463463
}
464464
}
465465

466-
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> ArraySlice<T>, @autoclosure _ expression2: () -> ArraySlice<T>, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
466+
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> ArraySlice<T>, @autoclosure _ expression2: () -> ArraySlice<T>, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
467467
let assertionType = _XCTAssertionType.NotEqual
468468

469469
// evaluate each expression exactly once
@@ -498,7 +498,7 @@ public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> Arr
498498
}
499499
}
500500

501-
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> [T], @autoclosure _ expression2: () -> [T], _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
501+
public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> [T], @autoclosure _ expression2: () -> [T], @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
502502
let assertionType = _XCTAssertionType.NotEqual
503503

504504
// evaluate each expression exactly once
@@ -533,7 +533,7 @@ public func XCTAssertNotEqual<T : Equatable>(@autoclosure expression1: () -> [T]
533533
}
534534
}
535535

536-
public func XCTAssertNotEqual<T, U : Equatable>(@autoclosure expression1: () -> [T: U], @autoclosure _ expression2: () -> [T: U], _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
536+
public func XCTAssertNotEqual<T, U : Equatable>(@autoclosure expression1: () -> [T: U], @autoclosure _ expression2: () -> [T: U], @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
537537
let assertionType = _XCTAssertionType.NotEqual
538538

539539
// evaluate each expression exactly once
@@ -583,7 +583,7 @@ func _XCTCheckEqualWithAccuracy_CGFloat(value1: CGFloat, _ value2: CGFloat, _ ac
583583
&& (abs(value1 - value2) <= accuracy)
584584
}
585585

586-
public func XCTAssertEqualWithAccuracy<T : FloatingPointType>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, accuracy: T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
586+
public func XCTAssertEqualWithAccuracy<T : FloatingPointType>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, accuracy: T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
587587
let assertionType = _XCTAssertionType.EqualWithAccuracy
588588

589589
// evaluate each expression exactly once
@@ -651,7 +651,7 @@ func _XCTCheckNotEqualWithAccuracy_CGFloat(value1: CGFloat, _ value2: CGFloat, _
651651
|| (abs(value1 - value2) > accuracy)
652652
}
653653

654-
public func XCTAssertNotEqualWithAccuracy<T : FloatingPointType>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ accuracy: T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
654+
public func XCTAssertNotEqualWithAccuracy<T : FloatingPointType>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ accuracy: T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
655655
let assertionType = _XCTAssertionType.NotEqualWithAccuracy
656656

657657
// evaluate each expression exactly once
@@ -704,7 +704,7 @@ public func XCTAssertNotEqualWithAccuracy<T : FloatingPointType>(@autoclosure ex
704704
}
705705
}
706706

707-
public func XCTAssertGreaterThan<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
707+
public func XCTAssertGreaterThan<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
708708
let assertionType = _XCTAssertionType.GreaterThan
709709

710710
// evaluate each expression exactly once
@@ -739,7 +739,7 @@ public func XCTAssertGreaterThan<T : Comparable>(@autoclosure expression1: () ->
739739
}
740740
}
741741

742-
public func XCTAssertGreaterThanOrEqual<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__)
742+
public func XCTAssertGreaterThanOrEqual<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__)
743743
{
744744
let assertionType = _XCTAssertionType.GreaterThanOrEqual
745745

@@ -775,7 +775,7 @@ public func XCTAssertGreaterThanOrEqual<T : Comparable>(@autoclosure expression1
775775
}
776776
}
777777

778-
public func XCTAssertLessThan<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
778+
public func XCTAssertLessThan<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
779779
let assertionType = _XCTAssertionType.LessThan
780780

781781
// evaluate each expression exactly once
@@ -810,7 +810,7 @@ public func XCTAssertLessThan<T : Comparable>(@autoclosure expression1: () -> T,
810810
}
811811
}
812812

813-
public func XCTAssertLessThanOrEqual<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__)
813+
public func XCTAssertLessThanOrEqual<T : Comparable>(@autoclosure expression1: () -> T, @autoclosure _ expression2: () -> T, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__)
814814
{
815815
let assertionType = _XCTAssertionType.LessThanOrEqual
816816

@@ -849,37 +849,37 @@ public func XCTAssertLessThanOrEqual<T : Comparable>(@autoclosure expression1: (
849849
#if XCTEST_ENABLE_EXCEPTION_ASSERTIONS
850850
// --- Currently-Unsupported Assertions ---
851851

852-
public func XCTAssertThrows(@autoclosure expression: () -> Any?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
852+
public func XCTAssertThrows(@autoclosure expression: () -> Any?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
853853
let assertionType = _XCTAssertionType.Assertion_Throws
854854

855855
// FIXME: Unsupported
856856
}
857857

858-
public func XCTAssertThrowsSpecific(@autoclosure expression: () -> Any?, _ exception: Any, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
858+
public func XCTAssertThrowsSpecific(@autoclosure expression: () -> Any?, _ exception: Any, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
859859
let assertionType = _XCTAssertionType.Assertion_ThrowsSpecific
860860

861861
// FIXME: Unsupported
862862
}
863863

864-
public func XCTAssertThrowsSpecificNamed(@autoclosure expression: () -> Any?, _ exception: Any, _ name: String, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
864+
public func XCTAssertThrowsSpecificNamed(@autoclosure expression: () -> Any?, _ exception: Any, _ name: String, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
865865
let assertionType = _XCTAssertionType.Assertion_ThrowsSpecificNamed
866866

867867
// FIXME: Unsupported
868868
}
869869

870-
public func XCTAssertNoThrow(@autoclosure expression: () -> Any?, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
870+
public func XCTAssertNoThrow(@autoclosure expression: () -> Any?, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
871871
let assertionType = _XCTAssertionType.Assertion_NoThrow
872872

873873
// FIXME: Unsupported
874874
}
875875

876-
public func XCTAssertNoThrowSpecific(@autoclosure expression: () -> Any?, _ exception: Any, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
876+
public func XCTAssertNoThrowSpecific(@autoclosure expression: () -> Any?, _ exception: Any, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
877877
let assertionType = _XCTAssertionType.Assertion_NoThrowSpecific
878878

879879
// FIXME: Unsupported
880880
}
881881

882-
public func XCTAssertNoThrowSpecificNamed(@autoclosure expression: () -> Any?, _ exception: Any, _ name: String, _ message: String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
882+
public func XCTAssertNoThrowSpecificNamed(@autoclosure expression: () -> Any?, _ exception: Any, _ name: String, @autoclosure _ message: () -> String = "", file: StaticString = __FILE__, line: UInt = __LINE__) -> Void {
883883
let assertionType = _XCTAssertionType.Assertion_NoThrowSpecificNamed
884884

885885
// FIXME: Unsupported

0 commit comments

Comments
 (0)