> On May 12, 2016, at 18:56, Andrew Trick <atr...@apple.com> wrote:
> 
>> - What was the thought behind putting UnsafeBytePointer in PointerTypeKind? 
>> OpaquePointer isn’t there, and I’m concerned about places that test if 
>> something’s a pointer by checking that the pointee type is non-null (by far 
>> the common pattern).
> 
> In general I wanted UnsafeBytePointer to stand-in for UnsafePointer<Void> 
> throughout the type system and handle most of the same implicit conversions. 
> Specifically, I wanted getAnyPointerElementType to do the same thing as 
> UnsafePointer<Void> and return an empty tuple pointee type so that the 
> calling code could be reused. Also, I thought that supporting 
> PointerToPointerExpr was necessary.
> 
> The only extra burden of doing this that I could find was that 
> getPointerPointeePropertyDecl may return null. The only code that calls this 
> is emitStoreToForeignErrorSlot.
> 
> I'm very open to alternate implementations, especially once the proposal is 
> accepted.

I’m sorry, I got ASTContext::getPointerPointeePropertyDecl and 
TypeBase::getAnyPointerElementType mixed up. I’m still a little unsure that 
this is the right way to go, and I wonder how many uses of 
getAnyPointerElementType actually make sense for UnsafeBytePointer, but I see 
now that it’s the most incremental way to make this change.

For fun I looked through the (relatively small) set of uses for 
getAnyPointerElementType, and it looks like only the inout-to-pointer ones are 
relevant for UnsafeBytePointer. (These are the ones in lib/Sema, plus SILGen’s 
RValueEmitter::visitInOutToPointerExpr.) So it could be dropped as a pointer 
type. But it doesn’t seem to be doing any harm.

Jordan

_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev

Reply via email to