[swift-dev] ExistentialMetatypeType assertion failure on Linux

Luke Howard lukeh at padl.com
Wed Dec 30 16:37:58 CST 2015


> On 31 Dec 2015, at 5:03 AM, Joe Groff <jgroff at apple.com> wrote:
> 
>> 
>> On Dec 29, 2015, at 9:04 PM, Luke Howard via swift-dev <swift-dev at swift.org> wrote:
>> 
>> I’m seeing an assertion failure when I try to compile the following on Linux:
>> 
>> 	typealias TypeMetadataAccessor = @convention(c) () -> AnyClass?
>> 
>> The assertion failing is:
>> 
>>   assert(getASTContext().LangOpts.EnableObjCInterop ||
>>          *repr != MetatypeRepresentation::ObjC);
>> 
>> in ExistentialMetatypeType::ExistentialMetatypeType(). Commenting it out and the code compiles and works.
>> 
>> Can someone that understands the compiler suggest the correct fix?
> 
> It looks like you're trying to poke at private runtime metadata structures; please don't do that. What are you trying to do?

Per our exchange yesterday – implement NSStringFromClass() heuristics for NSKeyedArchiver

A better solution would be to provide a proposed API/patch to the runtime but I was just trying to get the NSCoding branch testable on Linux first – can’t tackle everything at once.

More:

	https://bugs.swift.org/browse/SR-381

— Luke


More information about the swift-dev mailing list