mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
conversions that reverse an implicit conversion done to align foreign declarations with their imported types. For example, consider an Objective-C method that returns an NSString*: - (nonnull NSString*) foo; This will be imported into Swift as a method returning a String: func foo() -> String A call to this method will implicitly convert the result to String behind the scenes. If the user then casts the result back to NSString*, that would normally be compiled as an additional conversion. The compiler cannot simply eliminate the conversion because that is not necessarily semantically equivalent. This peephole recognizes as-casts that immediately reverse a bridging conversion as a special case and gives them special power to eliminate both conversions. For example, 'foo() as NSString' will simply return the original return value. In addition to call results, this also applies to call arguments, property accesses, and subscript accesses.
129 lines
1.9 KiB
Plaintext
129 lines
1.9 KiB
Plaintext
module cfuncs { header "cfuncs.h" }
|
|
module ctypes {
|
|
header "ctypes.h"
|
|
explicit module bits {
|
|
header "ctypes/bits.h"
|
|
}
|
|
}
|
|
module stdio { header "stdio.h" }
|
|
module cvars { header "cvars.h" }
|
|
module blocks {
|
|
header "blocks.h"
|
|
export *
|
|
}
|
|
|
|
// Note: The real Darwin includes stdc stuff. This one is just for testing
|
|
// Darwin-specific things.
|
|
module Darwin {
|
|
module MacTypes {
|
|
header "MacTypes.h"
|
|
export *
|
|
}
|
|
}
|
|
|
|
module CoreMIDI {
|
|
header "CoreMIDI.h"
|
|
export *
|
|
}
|
|
|
|
module Dispatch {
|
|
header "dispatch.h"
|
|
export *
|
|
}
|
|
|
|
module MachO {
|
|
header "dyld.h"
|
|
export *
|
|
}
|
|
|
|
module AVFoundation {
|
|
header "AVFoundation.h"
|
|
export *
|
|
}
|
|
module CoreGraphics {
|
|
header "CoreGraphics.h"
|
|
export *
|
|
}
|
|
module CoreFoundation {
|
|
header "CoreFoundation.h"
|
|
export *
|
|
}
|
|
|
|
module Foundation {
|
|
header "Foundation.h"
|
|
export *
|
|
}
|
|
module AppKit {
|
|
header "AppKit.h"
|
|
export *
|
|
}
|
|
module UIKit {
|
|
header "UIKit.h"
|
|
export *
|
|
}
|
|
|
|
module NotificationCenter {
|
|
header "NotificationCenter.h"
|
|
export *
|
|
}
|
|
|
|
module objc_ext { header "objc_ext.h" }
|
|
module macros {
|
|
header "macros.h"
|
|
// Don't re-export macros_private_impl.
|
|
export macros_impl
|
|
}
|
|
module macros_impl { header "macros_impl.h" }
|
|
module macros_private_impl { header "macros_private_impl.h" }
|
|
module user_objc { header "user_objc.h" }
|
|
|
|
module Properties {
|
|
header "Properties.h"
|
|
export *
|
|
}
|
|
|
|
module Security {
|
|
header "Authorization.h"
|
|
header "SecItem.h"
|
|
export *
|
|
}
|
|
|
|
module nullability {
|
|
header "nullability.h"
|
|
export *
|
|
}
|
|
|
|
module objc_structs {
|
|
header "objc_structs.h"
|
|
export *
|
|
}
|
|
|
|
module enums_using_attributes {
|
|
header "enums_using_attributes.h"
|
|
}
|
|
|
|
module errors {
|
|
header "errors.h"
|
|
export *
|
|
}
|
|
|
|
module c_simd {
|
|
header "simd.h"
|
|
export *
|
|
}
|
|
|
|
module objc_generics {
|
|
header "objc_generics.h"
|
|
export *
|
|
}
|
|
|
|
module CoreMedia {
|
|
header "CoreMedia.h"
|
|
export *
|
|
}
|
|
|
|
module OtherSubscripts {
|
|
header "OtherSubscripts.h"
|
|
export *
|
|
}
|