mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Simplify assertion machinery in the standard library.
This change includes a number of simplifications that allow us to eliminate the type checker hack that specifically tries AssertString. Doing so provides a 25% speedup in the test/stdlib/ArrayNew.swift test (which is type-checker bound). The specific simplifications here: - User-level assert/precondition/preconditionalFailure/assertionFailer/fatalError always take an autoclosure producing a String, eliminating the need for the StaticString/AssertString dance. - Standard-library internal _precondition/_sanityCheck/etc. always take a StaticString. When we want to improve the diagnostics in the standard library, we can provide a separate overload or differently-named function. - Remove AssertString, AssertStringType, StaticStringType, which are no longer used or needed - Remove the AssertString hack from the compiler - Remove the "BooleanType" overloads of these functions, because their usefuless left when we stopped making optional types conform to BooleanType (sorry, should have been a separate patch). Swift SVN r22139
This commit is contained in:
@@ -284,14 +284,6 @@ getAlternativeLiteralTypes(KnownProtocolKind kind) {
|
||||
case KnownProtocolKind::StringInterpolationConvertible:
|
||||
case KnownProtocolKind::StringLiteralConvertible:
|
||||
case KnownProtocolKind::UnicodeScalarLiteralConvertible:
|
||||
{
|
||||
UnqualifiedLookup lookup(TC.Context.getIdentifier("AssertString"),
|
||||
DC->getModuleScopeContext(),
|
||||
nullptr);
|
||||
if (auto typeDecl = lookup.getSingleTypeResult()) {
|
||||
types.push_back(typeDecl->getDeclaredInterfaceType());
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case KnownProtocolKind::IntegerLiteralConvertible:
|
||||
|
||||
Reference in New Issue
Block a user