mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
In Swift 4.2 the second parameter of UIApplicationMain exactly matches the type
of CommandLine.unsafeArgv so it can be called as below:
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, ...)
This is how it was intended to be in Swift 4 as well, but the types had
optionality differences, so callers instead had to do something like the below
example from the Firefox-iOS project:
let pointer = UnsafeMutableRawPointer(CommandLine.unsafeArgv).bindMemory(
to: UnsafeMutablePointer<Int8>.self, capacity: Int(CommandLine.argc))
UIApplicationMain(CommandLine.argc, pointer, ...)
This migration simply replaces the the second argument with
CommandLine.unsafeArgv if the first argument is CommandLine.argc.
There is an open issue for providing a deprecated version with the old type so
we simply leave as is any callers that don't pass argc for the first argument.
Resolves rdar://problem/40045693.
15 lines
894 B
Plaintext
15 lines
894 B
Plaintext
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/ui-application-main.swift.result -emit-remap-file-path %t/ui-application-main.swift.remap -o /dev/null -swift-version 3
|
|
// RUN: diff -u %S/ui-application-main.swift.expected %t/ui-application-main.swift.result
|
|
// RUN: %empty-directory(%t) && %target-swift-frontend -c -update-code -primary-file %s -emit-migrated-file-path %t/ui-application-main.swift.result -emit-remap-file-path %t/ui-application-main.swift.remap -o /dev/null -swift-version 4
|
|
// RUN: diff -u %S/ui-application-main.swift.expected %t/ui-application-main.swift.result
|
|
|
|
// REQUIRES: OS=ios
|
|
// REQUIRES: objc_interop
|
|
|
|
import UIKit
|
|
|
|
func foo(pointer: UnsafeMutablePointer<UnsafeMutablePointer<Int8>>) {
|
|
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, "", "")
|
|
UIApplicationMain(2, pointer, "", "")
|
|
}
|