Skip to content
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

[SR-2227] Cannot conform to ObjC protocols with NSDictionary as argument #44834

Closed
colemancda opened this issue Jul 31, 2016 · 4 comments
Closed
Assignees
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself PrintAsClang Area → compiler: The PrintAsClang library

Comments

@colemancda
Copy link
Contributor

Previous ID SR-2227
Radar rdar://problem/27628810
Original Reporter @colemancda
Type Bug
Status Resolved
Resolution Done
Environment

macOS Sierra Xcode 8 b3, Swift 07-29-2016

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, PrintAsObjC
Assignee @jckarter
Priority Medium

md5: 2594c951ea245c77b72bd943e7ef49ba

relates to:

  • SR-2241 Segmentation fault 11 using observeValue

Issue Description:

Cannot compile any iOS application due to Swift compiler crashing when compiling a Swift class that conforms to an ObjC protocol that contains NSDictionary as an argument.

Case:

import UIKit

@UIApplicationMain
final class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDelegate {

var window: UIWindow?

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [AnyHashable : Any]?) -> Bool { return true }

Compiler crashes with segmentation fault 11:

1. While generating Objective-C header
2. While printing 'AppDelegate' at <invalid loc>
3. While printing type '[AnyHashable : Any]?'
4. While printing NULL type!

@colemancda
Copy link
Contributor Author

Another case:

Checkout my project on Github PureSwift/GATT@1c362c9

The compiler crashes with segmentation fault 11 due to NSDictionary imported at [String: Any]

DarwinCentral.swift: LOC 344:

@objc(centralManager:didDiscoverPeripheral:advertisementData:RSSI:)
public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber)

Compiler Crash:

MergeSwiftModule normal x86_64 /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT.swiftmodule
cd /Users/coleman/Developer/GATT/Xcode
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-07-29-a.xctoolchain/usr/bin/swift -frontend -emit-module "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Centralpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinAttributespartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/LinuxPeripheralpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Peerpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinPeripheralpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinCentralpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Peripheralpartial.swiftmodule" "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Beaconpartial.swiftmodule" -parse-as-library -target x86_64-apple-macosx10.10 -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -I /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug -F /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug -F /Users/coleman/Developer/GATT/Xcode/../Carthage/Build/Mac -enable-testing -g -import-underlying-module -module-cache-path /Users/coleman/Library/Developer/Xcode/DerivedData/ModuleCache -D XcodeLinux -serialize-debugging-options -Xcc "-I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/swift-overrides.hmap" -Xcc -iquote -Xcc "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-generated-files.hmap" -Xcc "-I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-own-target-headers.hmap" -Xcc "-I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-all-non-framework-target-headers.hmap" -Xcc -ivfsoverlay -Xcc /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/all-product-headers.yaml -Xcc -iquote -Xcc "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-project-headers.hmap" -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug/include -Xcc "-I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/DerivedSources/x86_64" -Xcc "-I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/DerivedSources" -Xcc -DDEBUG=1 -Xcc -ivfsoverlay -Xcc "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/unextended-module-overlay.yaml" -Xcc -working-directory/Users/coleman/Developer/GATT/Xcode -emit-module-doc-path "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT.swiftdoc" -module-name GATT -emit-objc-header-path "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT-Swift.h" -o "/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT.swiftmodule"

0 swift 0x0000000104a57c0b llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 43
1 swift 0x0000000104a56e56 llvm::sys::RunSignalHandlers() + 70
2 swift 0x0000000104a5835f SignalHandler(int) + 383
3 libsystem_platform.dylib 0x000000010728fd7a _sigtramp + 26
4 libsystem_platform.dylib 0x00007fff5de94480 _sigtramp + 1455441696
5 swift 0x0000000102248200 (anonymous namespace)::ObjCPrinter::print(swift::Type, llvm::Optionalswift::OptionalTypeKind, swift::Identifier) + 208
6 swift 0x000000010224d827 (anonymous namespace)::ObjCPrinter::printCollectionElement(swift::Type) + 279
7 swift 0x000000010224d506 (anonymous namespace)::ObjCPrinter::printObjCBridgeableType(swift::NominalTypeDecl const*, swift::ClassDecl const*, llvm::ArrayRefswift::Type, llvm::Optionalswift::OptionalTypeKind) + 550
8 swift 0x0000000102248c7d swift::TypeVisitor<(anonymous namespace)::ObjCPrinter, void, llvm::Optionalswift::OptionalTypeKind >::visit(swift::Type, llvm::Optionalswift::OptionalTypeKind) + 1725
9 swift 0x0000000102248f56 swift::TypeVisitor<(anonymous namespace)::ObjCPrinter, void, llvm::Optionalswift::OptionalTypeKind >::visit(swift::Type, llvm::Optionalswift::OptionalTypeKind) + 2454
10 swift 0x0000000102248200 (anonymous namespace)::ObjCPrinter::print(swift::Type, llvm::Optionalswift::OptionalTypeKind, swift::Identifier) + 208
11 swift 0x0000000102253df6 (anonymous namespace)::ObjCPrinter::printAbstractFunctionAsMethod(swift::AbstractFunctionDecl*, bool, bool) + 2118
12 swift 0x0000000102253202 (anonymous namespace)::ObjCPrinter::printMembers(swift::IteratorRangeswift::DeclIterator) + 338
13 swift 0x0000000102251b70 swift::ASTVisitor<(anonymous namespace)::ObjCPrinter, void, void, void, void, void, void>::visit(swift::Decl*) + 4768
14 swift 0x00000001022441a4 swift::printAsObjC(llvm::raw_ostream&, swift::ModuleDecl*, llvm::StringRef, swift::Accessibility) + 1700
15 swift 0x0000000101db003e printAsObjC(std::__1::basic_string<char, std::__1::char_traits, std::__1::allocator > const&, swift::ModuleDecl*, llvm::StringRef, bool) + 462
16 swift 0x0000000101daeb6a performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*) + 14746
17 swift 0x0000000101da9eff swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2895
18 swift 0x0000000101d6c8d0 main + 2448
19 libdyld.dylib 0x0000000106f4d255 start + 1
20 libdyld.dylib 0x0000000000000047 start + 4178259443
Stack dump:
0. Program arguments: /Applications/Xcode-beta.app/Contents/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-07-29-a.xctoolchain/usr/bin/swift -frontend -emit-module /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Centralpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinAttributespartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/LinuxPeripheralpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Peerpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinPeripheralpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/DarwinCentralpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Peripheralpartial.swiftmodule /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/Beaconpartial.swiftmodule -parse-as-library -target x86_64-apple-macosx10.10 -enable-objc-interop -sdk /Applications/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -I /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug -F /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug -F /Users/coleman/Developer/GATT/Xcode/../Carthage/Build/Mac -enable-testing -g -import-underlying-module -module-cache-path /Users/coleman/Library/Developer/Xcode/DerivedData/ModuleCache -D XcodeLinux -serialize-debugging-options -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-generated-files.hmap -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-own-target-headers.hmap -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-all-non-framework-target-headers.hmap -Xcc -ivfsoverlay -Xcc /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/all-product-headers.yaml -Xcc -iquote -Xcc /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/GATT-project-headers.hmap -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Products/Debug/include -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/DerivedSources/x86_64 -Xcc -I/Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -ivfsoverlay -Xcc /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/unextended-module-overlay.yaml -Xcc -working-directory/Users/coleman/Developer/GATT/Xcode -emit-module-doc-path /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT.swiftdoc -module-name GATT -emit-objc-header-path /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT-Swift.h -o /Users/coleman/Library/Developer/Xcode/DerivedData/GATT-fcorxmspgiyravdwwgowejzbumwp/Build/Intermediates/GATT.build/Debug/GATT OS X.build/Objects-normal/x86_64/GATT.swiftmodule

  1. While generating Objective-C header
  2. While printing 'DarwinCentral' at
  3. While printing type '[String : Any]'
  4. While printing NULL type!

@belkadan
Copy link
Contributor

belkadan commented Aug 1, 2016

@jckarter, you were going to look at this one, yes?

@jckarter
Copy link
Member

jckarter commented Aug 1, 2016

Yep, thanks Jordan.

@jckarter
Copy link
Member

jckarter commented Aug 2, 2016

#3918 should address this.

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself PrintAsClang Area → compiler: The PrintAsClang library
Projects
None yet
Development

No branches or pull requests

3 participants