blob: b689ce50e4a163bb7558c1d5e868c4ed3a23082b [file] [log] [blame]
// RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -I %t -I %S/Inputs/custom-modules -print-module -source-filename %s -module-to-print=ImportAsMember.Proto -always-argument-labels > %t.printed.Proto.txt
// RUN: FileCheck %s -check-prefix=PRINT-PROTO -strict-whitespace < %t.printed.Proto.txt
// PRINT-PROTO-LABEL: protocol ImportedProtocolBase : NSObjectProtocol {
// PRINT-PROTO-NEXT: }
// PRINT-PROTO-NEXT: typealias ImportedProtocolBase_t = ImportedProtocolBase
// PRINT-PROTO-NEXT: protocol IAMProto : ImportedProtocolBase {
// PRINT-PROTO-NEXT: }
// PRINT-PROTO-NEXT: typealias IAMProto_t = IAMProto
// PRINT-PROTO-NEXT: extension IAMProto {
// PRINT-PROTO-NEXT: func mutateSomeState()
// PRINT-PROTO-NEXT: func mutateSomeState(withParameter _: Int)
// PRINT-PROTO-NEXT: func mutateSomeState(withFirstParameter _: Int)
// PRINT-PROTO-NEXT: var someValue: Int32
// PRINT-PROTO-NEXT: }
// RUN: %target-swift-ide-test(mock-sdk: %clang-importer-sdk) -I %t -I %S/Inputs/custom-modules -print-module -source-filename %s -module-to-print=ImportAsMember.Class -always-argument-labels > %t.printed.Class.txt
// RUN: FileCheck %s -check-prefix=PRINT-CLASS -strict-whitespace < %t.printed.Class.txt
// PRINT-CLASS-LABEL: class SomeClass : NSObject {
// PRINT-CLASS-NEXT: init()
// PRINT-CLASS-NEXT: }
// PRINT-CLASS-NEXT: extension SomeClass {
// PRINT-CLASS-NEXT: /*not inherited*/ init(value x: Double)
// PRINT-CLASS-NEXT: func applyOptions(_ options: SomeClass.Options)
// PRINT-CLASS-NEXT: struct Options : OptionSet {
// PRINT-CLASS-NEXT: init(rawValue rawValue: Int)
// PRINT-CLASS-NEXT: let rawValue: Int
// PRINT-CLASS-NEXT: static var fuzzyDice: SomeClass.Options { get }
// PRINT-CLASS-NEXT: static var spoiler: SomeClass.Options { get }
// PRINT-CLASS-NEXT: }
// PRINT-CLASS-NEXT: }
// RUN: %target-parse-verify-swift -I %S/Inputs/custom-modules
// REQUIRES: objc_interop
import Foundation
import ImportAsMember.Proto
import ImportAsMember.Class
import IAMError
// Errors
ErrorStruct.hasPrototype();
// Protocols
@objc class Foo : NSObject, IAMProto {}
struct Bar : IAMProto {}
// expected-error@-1{{non-class type 'Bar' cannot conform to class protocol 'IAMProto'}}
// expected-error@-2{{non-class type 'Bar' cannot conform to class protocol 'ImportedProtocolBase'}}
// expected-error@-3{{non-class type 'Bar' cannot conform to class protocol 'NSObjectProtocol'}}
@objc class FooErr : NSObject, ErrorProto {}
let foo = Foo()
foo.mutateSomeState()
let fooErr = FooErr()
fooErr.mutateSomeInstanceState()
FooErr.mutateSomeStaticState()
// expected-error@-1{{type 'FooErr' has no member 'mutateSomeStaticState'}}
// Import into members of an imported, renamed class.
let someClassOpts: SomeClass.Options = .fuzzyDice
let someClass = SomeClass(value: 3.14159)
someClass.applyOptions(someClassOpts)
class SomeSub : UnavailableDefaultInitSub { }
// Handle default initializers.
let udi1 = UnavailableDefaultInit()
let udis1 = UnavailableDefaultInitSub()