-
Notifications
You must be signed in to change notification settings - Fork 10.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SE-0055: Making pointer nullability explicit #1878
Conversation
// non-object, non-block pointers are never Optional in Swift; they | ||
// just can have a value of 'nil' themselves. | ||
hint = ImportHint::CustomNullablePointer; | ||
} else if (type->isPointerType() || type->isBlockPointerType()) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note for reviewers: the comment was wrong. Clang's isAnyPointerType
includes pointers-to-ObjC-objects (covered above) and does not include block pointers.
b0c0f9e
to
3011f45
Compare
Review requests:
|
(nil, nil, nil, nil) | ||
} | ||
var objects: [ObjectsBuffer] | ||
var objects: [Unmanaged<AnyObject>?] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This code was using inline storage to prevent an extra allocation for the array. Could you change it back?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what you mean. This is still inline storage.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or do single-element arrays have some magic I don't know about?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh, sorry -- I didn't notice it was an array to begin with. I thought it used a struct of four pointers directly. Never mind then.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We could probably consider doing that (going back to that?), but I'd make it a separate patch.
Sema changes look good to me. |
4993c11
to
89f800a
Compare
@swift-ci Please benchmark |
Build comment file:Optimized (O)
|
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
PopFrontArrayGeneric | 1237 | 1132 | -8.5% | 1.09x |
No Changes (114)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
Array2D | 2100 | 1991 | -5.2% | 1.05x |
SetIntersect_OfObjects | 3412 | 3243 | -5.0% | 1.05x(?) |
ObjectiveCBridgeToNSDictionary | 16176 | 15342 | -5.2% | 1.05x(?) |
ErrorHandling | 2817 | 2773 | -1.6% | 1.02x |
NSDictionaryCastToSwift | 10796 | 10625 | -1.6% | 1.02x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToString | 187717 | 183178 | -2.4% | 1.02x(?) |
DictionaryBridge | 3738 | 3703 | -0.9% | 1.01x(?) |
ObjectiveCBridgeFromNSDictionaryAnyObject | 221048 | 218925 | -1.0% | 1.01x(?) |
ObjectAllocation | 142 | 141 | -0.7% | 1.01x(?) |
StrComplexWalk | 2754 | 2721 | -1.2% | 1.01x(?) |
NSError | 355 | 353 | -0.6% | 1.01x(?) |
SetExclusiveOr_OfObjects | 12648 | 12562 | -0.7% | 1.01x(?) |
ObjectiveCBridgeStubFromArrayOfNSString | 106926 | 105437 | -1.4% | 1.01x(?) |
ObjectiveCBridgeToNSString | 1034 | 1033 | -0.1% | 1.00x(?) |
StackPromo | 20600 | 20602 | +0.0% | 1.00x(?) |
PopFrontArray | 1224 | 1224 | +0.0% | 1.00x |
RecursiveOwnedParameter | 1829 | 1829 | +0.0% | 1.00x |
ObjectiveCBridgeStubToNSString | 1371 | 1370 | -0.1% | 1.00x |
ClassArrayGetter | 12 | 12 | +0.0% | 1.00x |
Histogram | 654 | 654 | +0.0% | 1.00x |
SortStrings | 1650 | 1650 | +0.0% | 1.00x |
ObjectiveCBridgeFromNSDictionaryAnyObjectForced | 4496 | 4508 | +0.3% | 1.00x(?) |
MonteCarloPi | 42554 | 42568 | +0.0% | 1.00x |
StringWithCString | 80988 | 81015 | +0.0% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectForced | 3789 | 3794 | +0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSStringForced | 2133 | 2141 | +0.4% | 1.00x(?) |
SortLettersInPlace | 1006 | 1001 | -0.5% | 1.00x |
ArrayOfGenericPOD | 208 | 208 | +0.0% | 1.00x |
Dictionary3OfObjects | 1246 | 1247 | +0.1% | 1.00x |
SetUnion_OfObjects | 10317 | 10284 | -0.3% | 1.00x(?) |
RangeAssignment | 278 | 278 | +0.0% | 1.00x |
ByteSwap | 1 | 1 | +0.0% | 1.00x |
SuperChars | 503214 | 503261 | +0.0% | 1.00x(?) |
XorLoop | 358 | 359 | +0.3% | 1.00x |
StringInterpolation | 9971 | 9940 | -0.3% | 1.00x(?) |
Integrate | 225 | 225 | +0.0% | 1.00x |
ObjectiveCBridgeStubFromNSStringRef | 327 | 327 | +0.0% | 1.00x |
ObjectiveCBridgeStubFromNSString | 704 | 705 | +0.1% | 1.00x(?) |
ProtocolDispatch | 2870 | 2871 | +0.0% | 1.00x(?) |
TypeFlood | 0 | 0 | +0.0% | 1.00x |
ObjectiveCBridgeFromNSSetAnyObject | 111691 | 112104 | +0.4% | 1.00x(?) |
AngryPhonebook | 0 | 0 | +0.0% | 1.00x |
ProtocolDispatch2 | 151 | 151 | +0.0% | 1.00x |
Walsh | 309 | 309 | +0.0% | 1.00x |
Dictionary3 | 741 | 743 | +0.3% | 1.00x(?) |
Dictionary2 | 2357 | 2357 | +0.0% | 1.00x |
Join | 403 | 404 | +0.2% | 1.00x(?) |
ObjectiveCBridgeToNSArray | 29092 | 29175 | +0.3% | 1.00x(?) |
DictionaryOfObjects | 2766 | 2763 | -0.1% | 1.00x(?) |
PopFrontUnsafePointer | 8502 | 8502 | +0.0% | 1.00x |
CaptureProp | 4594 | 4596 | +0.0% | 1.00x(?) |
PolymorphicCalls | 61 | 61 | +0.0% | 1.00x |
Calculator | 34 | 34 | +0.0% | 1.00x |
MapReduce | 324 | 324 | +0.0% | 1.00x |
DictionaryLiteral | 3234 | 3248 | +0.4% | 1.00x(?) |
Hanoi | 3296 | 3289 | -0.2% | 1.00x(?) |
OpenClose | 48 | 48 | +0.0% | 1.00x |
DictionaryRemoveOfObjects | 22568 | 22552 | -0.1% | 1.00x(?) |
UTF8Decode | 268 | 268 | +0.0% | 1.00x |
Dictionary | 962 | 963 | +0.1% | 1.00x(?) |
NopDeinit | 34591 | 34602 | +0.0% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObject | 61450 | 61506 | +0.1% | 1.00x(?) |
SetIntersect | 1305 | 1304 | -0.1% | 1.00x |
SetExclusiveOr | 3724 | 3719 | -0.1% | 1.00x(?) |
RGBHistogramOfObjects | 24075 | 24152 | +0.3% | 1.00x(?) |
StrToInt | 5225 | 5229 | +0.1% | 1.00x(?) |
ObjectiveCBridgeFromNSString | 1512 | 1516 | +0.3% | 1.00x(?) |
Phonebook | 10438 | 10443 | +0.1% | 1.00x(?) |
Sim2DArray | 401 | 401 | +0.0% | 1.00x |
MonteCarloE | 10022 | 10030 | +0.1% | 1.00x(?) |
114 | 2550512 | 2556747 | +0.2% | 1.00x |
GlobalClass | 0 | 0 | +0.0% | 1.00x |
HashTest | 1770 | 1770 | +0.0% | 1.00x |
SetIsSubsetOf_OfObjects | 614 | 613 | -0.2% | 1.00x |
ArrayAppend | 730 | 729 | -0.1% | 1.00x(?) |
LinkedList | 8988 | 8986 | -0.0% | 1.00x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToStringForced | 112227 | 112427 | +0.2% | 1.00x(?) |
NSStringConversion | 613 | 613 | +0.0% | 1.00x |
RGBHistogram | 3462 | 3455 | -0.2% | 1.00x(?) |
ObjectiveCBridgeFromNSSetAnyObjectForced | 4194 | 4203 | +0.2% | 1.00x(?) |
ArrayValueProp4 | 5 | 5 | +0.0% | 1.00x |
ArrayOfPOD | 172 | 172 | +0.0% | 1.00x |
SetUnion | 3303 | 3312 | +0.3% | 1.00x(?) |
Chars | 655 | 657 | +0.3% | 1.00x |
StringBuilder | 1383 | 1383 | +0.0% | 1.00x |
DeadArray | 172 | 172 | +0.0% | 1.00x |
BitCount | 1 | 1 | +0.0% | 1.00x |
ArrayLiteral | 973 | 975 | +0.2% | 1.00x |
SevenBoom | 1285 | 1280 | -0.4% | 1.00x(?) |
StringWalk | 6341 | 6332 | -0.1% | 1.00x |
ArrayValueProp | 5 | 5 | +0.0% | 1.00x |
RC4 | 268 | 268 | +0.0% | 1.00x |
Memset | 222 | 222 | +0.0% | 1.00x |
Dictionary2OfObjects | 3921 | 3914 | -0.2% | 1.00x(?) |
ArrayAppendReserved | 507 | 507 | +0.0% | 1.00x |
TwoSum | 1716 | 1708 | -0.5% | 1.00x(?) |
ArrayValueProp2 | 5 | 5 | +0.0% | 1.00x |
ArrayValueProp3 | 5 | 5 | +0.0% | 1.00x |
ArraySubscript | 1344 | 1354 | +0.7% | 0.99x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToString | 154587 | 155897 | +0.8% | 0.99x(?) |
Prims | 753 | 760 | +0.9% | 0.99x(?) |
StaticArray | 2691 | 2716 | +0.9% | 0.99x(?) |
ArrayOfRef | 3388 | 3423 | +1.0% | 0.99x |
ObjectiveCBridgeToNSSet | 15412 | 15578 | +1.1% | 0.99x(?) |
ArrayOfGenericRef | 3438 | 3478 | +1.2% | 0.99x |
DictionarySwapOfObjects | 7654 | 7824 | +2.2% | 0.98x(?) |
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 201586 | 205417 | +1.9% | 0.98x(?) |
DictionarySwap | 690 | 705 | +2.2% | 0.98x(?) |
ObjectiveCBridgeStubToArrayOfNSString | 28966 | 29570 | +2.1% | 0.98x |
DictionaryRemove | 4670 | 4747 | +1.6% | 0.98x(?) |
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced | 126199 | 130876 | +3.7% | 0.96x |
SetIsSubsetOf | 476 | 495 | +4.0% | 0.96x |
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced | 154618 | 160432 | +3.8% | 0.96x(?) |
ArrayInClass | 60 | 63 | +5.0% | 0.95x(?) |
Regression (0)
Improvement (0)
No Changes (115)
TEST | OLD_MIN | NEW_MIN | DELTA (%) | SPEEDUP |
---|---|---|---|---|
ObjectiveCBridgeFromNSDictionaryAnyObjectToString | 213259 | 208723 | -2.1% | 1.02x(?) |
StaticArray | 17139 | 16881 | -1.5% | 1.02x |
DictionaryLiteral | 20427 | 20043 | -1.9% | 1.02x(?) |
ObjectiveCBridgeFromNSSetAnyObjectForced | 7446 | 7291 | -2.1% | 1.02x |
ObjectiveCBridgeToNSString | 1047 | 1037 | -1.0% | 1.01x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToString | 156506 | 155519 | -0.6% | 1.01x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectForced | 6997 | 6962 | -0.5% | 1.01x(?) |
ObjectiveCBridgeFromNSStringForced | 2541 | 2526 | -0.6% | 1.01x |
ObjectiveCBridgeFromNSDictionaryAnyObject | 231436 | 229280 | -0.9% | 1.01x(?) |
SuperChars | 679150 | 675129 | -0.6% | 1.01x(?) |
ErrorHandling | 7135 | 7035 | -1.4% | 1.01x(?) |
ProtocolDispatch | 4870 | 4839 | -0.6% | 1.01x |
ObjectiveCBridgeFromNSSetAnyObject | 118008 | 116992 | -0.9% | 1.01x(?) |
DictionaryOfObjects | 7085 | 6996 | -1.3% | 1.01x(?) |
PolymorphicCalls | 1112 | 1096 | -1.4% | 1.01x(?) |
NopDeinit | 56230 | 55938 | -0.5% | 1.01x |
Phonebook | 58493 | 58071 | -0.7% | 1.01x(?) |
LinkedList | 26401 | 26259 | -0.5% | 1.01x(?) |
StringBuilder | 8070 | 8016 | -0.7% | 1.01x(?) |
BitCount | 76 | 75 | -1.3% | 1.01x |
ArraySubscript | 4485 | 4488 | +0.1% | 1.00x(?) |
DictionarySwapOfObjects | 25760 | 25714 | -0.2% | 1.00x(?) |
StackPromo | 80372 | 80222 | -0.2% | 1.00x(?) |
PopFrontArray | 12187 | 12203 | +0.1% | 1.00x(?) |
RecursiveOwnedParameter | 10310 | 10330 | +0.2% | 1.00x(?) |
ObjectiveCBridgeStubToNSString | 1672 | 1668 | -0.2% | 1.00x(?) |
ClassArrayGetter | 1267 | 1265 | -0.2% | 1.00x(?) |
Array2D | 698552 | 698878 | +0.1% | 1.00x(?) |
Histogram | 13755 | 13799 | +0.3% | 1.00x(?) |
SortStrings | 5661 | 5667 | +0.1% | 1.00x(?) |
DictionaryBridge | 3808 | 3808 | +0.0% | 1.00x |
ArrayOfGenericPOD | 3236 | 3238 | +0.1% | 1.00x(?) |
StringWithCString | 533165 | 533260 | +0.0% | 1.00x(?) |
Prims | 13650 | 13660 | +0.1% | 1.00x(?) |
SortLettersInPlace | 2309 | 2305 | -0.2% | 1.00x |
DictionarySwap | 11725 | 11724 | -0.0% | 1.00x(?) |
Dictionary3OfObjects | 2729 | 2737 | +0.3% | 1.00x(?) |
SetUnion_OfObjects | 51322 | 51300 | -0.0% | 1.00x(?) |
RangeAssignment | 15703 | 15668 | -0.2% | 1.00x(?) |
ByteSwap | 9 | 9 | +0.0% | 1.00x |
XorLoop | 18447 | 18441 | -0.0% | 1.00x(?) |
StringInterpolation | 12652 | 12603 | -0.4% | 1.00x(?) |
Integrate | 341 | 341 | +0.0% | 1.00x |
ObjectiveCBridgeStubFromNSStringRef | 652 | 651 | -0.1% | 1.00x(?) |
ObjectiveCBridgeStubFromNSString | 1121 | 1122 | +0.1% | 1.00x(?) |
ObjectAllocation | 1295 | 1297 | +0.1% | 1.00x(?) |
ArrayLiteral | 1036 | 1036 | +0.0% | 1.00x |
ProtocolDispatch2 | 416 | 416 | +0.0% | 1.00x |
Walsh | 12250 | 12234 | -0.1% | 1.00x(?) |
Dictionary3 | 2094 | 2095 | +0.1% | 1.00x(?) |
Dictionary2 | 5030 | 5029 | -0.0% | 1.00x(?) |
StrComplexWalk | 7573 | 7567 | -0.1% | 1.00x(?) |
SetIntersect_OfObjects | 18957 | 18953 | -0.0% | 1.00x(?) |
Join | 1332 | 1331 | -0.1% | 1.00x |
ArrayOfRef | 9923 | 9924 | +0.0% | 1.00x(?) |
PopFrontArrayGeneric | 12380 | 12403 | +0.2% | 1.00x(?) |
CaptureProp | 53358 | 53259 | -0.2% | 1.00x(?) |
Calculator | 906 | 906 | +0.0% | 1.00x |
MapReduce | 45089 | 44873 | -0.5% | 1.00x(?) |
Hanoi | 22635 | 22616 | -0.1% | 1.00x(?) |
DictionaryRemoveOfObjects | 61002 | 60942 | -0.1% | 1.00x(?) |
UTF8Decode | 39361 | 39324 | -0.1% | 1.00x(?) |
SetIsSubsetOf | 2977 | 2974 | -0.1% | 1.00x(?) |
Dictionary | 4417 | 4424 | +0.2% | 1.00x |
ObjectiveCBridgeFromNSArrayAnyObject | 65614 | 65404 | -0.3% | 1.00x(?) |
SetIntersect | 18888 | 18857 | -0.2% | 1.00x(?) |
SetExclusiveOr | 48711 | 48812 | +0.2% | 1.00x(?) |
RGBHistogramOfObjects | 97858 | 97610 | -0.2% | 1.00x(?) |
StrToInt | 18734 | 18705 | -0.1% | 1.00x(?) |
ArrayInClass | 3646 | 3648 | +0.1% | 1.00x(?) |
ArrayOfGenericRef | 10554 | 10575 | +0.2% | 1.00x(?) |
ObjectiveCBridgeFromNSString | 4864 | 4850 | -0.3% | 1.00x |
Sim2DArray | 13145 | 13141 | -0.0% | 1.00x |
SetExclusiveOr_OfObjects | 66999 | 66990 | -0.0% | 1.00x(?) |
MonteCarloPi | 50360 | 50364 | +0.0% | 1.00x(?) |
MonteCarloE | 98784 | 98789 | +0.0% | 1.00x(?) |
114 | 5419340 | 5400253 | -0.3% | 1.00x |
GlobalClass | 0 | 0 | +0.0% | 1.00x |
HashTest | 5827 | 5827 | +0.0% | 1.00x |
SetIsSubsetOf_OfObjects | 2851 | 2852 | +0.0% | 1.00x(?) |
ArrayAppend | 2846 | 2847 | +0.0% | 1.00x(?) |
DictionaryRemove | 30381 | 30326 | -0.2% | 1.00x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToStringForced | 121534 | 121539 | +0.0% | 1.00x(?) |
NSStringConversion | 2592 | 2582 | -0.4% | 1.00x(?) |
RGBHistogram | 49640 | 49808 | +0.3% | 1.00x(?) |
ArrayValueProp4 | 2504 | 2505 | +0.0% | 1.00x(?) |
ArrayOfPOD | 2257 | 2257 | +0.0% | 1.00x |
SetUnion | 34938 | 34793 | -0.4% | 1.00x |
Chars | 54471 | 54507 | +0.1% | 1.00x(?) |
AngryPhonebook | 3502 | 3501 | -0.0% | 1.00x(?) |
SevenBoom | 1426 | 1430 | +0.3% | 1.00x(?) |
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced | 156253 | 155803 | -0.3% | 1.00x(?) |
StringWalk | 48861 | 48856 | -0.0% | 1.00x(?) |
ArrayValueProp | 2206 | 2212 | +0.3% | 1.00x |
RC4 | 8800 | 8802 | +0.0% | 1.00x(?) |
Memset | 20646 | 20649 | +0.0% | 1.00x(?) |
Dictionary2OfObjects | 6775 | 6762 | -0.2% | 1.00x(?) |
ArrayAppendReserved | 2615 | 2611 | -0.1% | 1.00x(?) |
TwoSum | 9228 | 9216 | -0.1% | 1.00x(?) |
ArrayValueProp2 | 18285 | 18294 | +0.1% | 1.00x(?) |
ArrayValueProp3 | 2546 | 2551 | +0.2% | 1.00x(?) |
ObjectiveCBridgeToNSSet | 16104 | 16338 | +1.4% | 0.99x(?) |
ObjectiveCBridgeToNSArray | 29436 | 29590 | +0.5% | 0.99x(?) |
NSError | 647 | 656 | +1.4% | 0.99x(?) |
PopFrontUnsafePointer | 93929 | 95357 | +1.5% | 0.99x(?) |
OpenClose | 434 | 438 | +0.9% | 0.99x(?) |
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced | 130679 | 131547 | +0.7% | 0.99x(?) |
NSDictionaryCastToSwift | 11834 | 11907 | +0.6% | 0.99x(?) |
ObjectiveCBridgeFromNSSetAnyObjectToString | 197857 | 199806 | +1.0% | 0.99x(?) |
DeadArray | 113722 | 115389 | +1.5% | 0.99x(?) |
ObjectiveCBridgeStubFromArrayOfNSString | 107637 | 108472 | +0.8% | 0.99x(?) |
TypeFlood | 148 | 151 | +2.0% | 0.98x(?) |
ObjectiveCBridgeStubToArrayOfNSString | 29497 | 29958 | +1.6% | 0.98x(?) |
ObjectiveCBridgeFromNSDictionaryAnyObjectForced | 6991 | 7243 | +3.6% | 0.97x(?) |
ObjectiveCBridgeToNSDictionary | 15684 | 16202 | +3.3% | 0.97x(?) |
@swift-ci Please test Linux platform |
42fae52
to
270f36b
Compare
270f36b
to
8c6a77d
Compare
8c6a77d
to
004c87a
Compare
004c87a
to
72d78d6
Compare
7fe3183
to
37e6b6f
Compare
emitPointerToPointer(mainClass, ManagedValue::forUnmanaged(argv), | ||
argv->getType().getSwiftRValueType(), | ||
unwrappedTy.getSwiftRValueType()); | ||
argv = converted.getUnmanagedSingleValue(*this, mainClass); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@slavapestov, here's the client code for the emitPointerToPointer change. Does this look right?
@swift-ci Please smoke test (full testing will fail because it tries to build other repos too) |
@swift-ci Please smoke test |
Implements SE-0055: https://github.com/apple/swift-evolution/blob/master/proposals/0055-optional-unsafe-pointers.md - Add NULL as an extra inhabitant of Builtin.RawPointer (currently hardcoded to 0 rather than being target-dependent). - Import non-object pointers as Optional/IUO when nullable/null_unspecified (like everything else). - Change the type checker's *-to-pointer conversions to handle a layer of optional. - Use 'AutoreleasingUnsafeMutablePointer<NSError?>?' as the type of error parameters exported to Objective-C. - Drop NilLiteralConvertible conformance for all pointer types. - Update the standard library and then all the tests. I've decided to leave this commit only updating existing tests; any new tests will come in the following commits. (That may mean some additional implementation work to follow.) The other major piece that's missing here is migration. I'm hoping we get a lot of that with Swift 1.1's work for optional object references, but I still need to investigate.
This previously blew up if the Objective-C client passed NULL for the error parameter, but started working after the pointer nullability change. Why? John had /already written and committed/ code to handle NULL assuming pointer nullability was explicit, and that code was /correct as is/.
Some inner pointers are explicitly annotated as _Nonnull, and we should believe that. This is important when passing, say, pointers to arrays.
37e6b6f
to
8151aa1
Compare
Update for SE-0055: Making pointer nullability explicit. See swiftlang/swift#1878.
…gs-again Disable assertion for both target and host toolchain
What's in this pull request?
An implementation of SE-0055: Make unsafe pointer nullability explicit using Optional, which touches quite a few things across the compiler and standard library. I'm opening this pull request early even though the review session hasn't completed in anticipation of the proposal being accepted in some form.
Before merging this pull request to apple/swift repository:
Test pull request on Swift continuous integration.Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
Validation Testing
Note: Only members of the Apple organization can trigger swift-ci.