mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Introduce stored property default argument kind Fix indent Assign nil to optionals with no initializers Don't emit generator for stored property default arg Fix problem with rebase Indentation Serialize stored property default arg text Fix some tests Add missing constructor in test Print stored property's initializer expression cleanups preserve switch complete_constructor formatting fix conflict
377 lines
12 KiB
Swift
377 lines
12 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-ide-test -skip-deinit=false -print-ast-typechecked -print-access -source-filename=%s | %FileCheck %s -check-prefix=CHECK -check-prefix=CHECK-SRC
|
|
// RUN: %target-swift-frontend -emit-module-path %t/accessibility_print.swiftmodule %s
|
|
// RUN: %target-swift-ide-test -skip-deinit=false -print-module -print-access -module-to-print=accessibility_print -I %t -source-filename=%s | %FileCheck %s
|
|
|
|
// This file uses alphabetic prefixes on its declarations because swift-ide-test
|
|
// sorts decls in a module before printing them.
|
|
|
|
// CHECK-LABEL: internal var AA_defaultGlobal
|
|
var AA_defaultGlobal = 0
|
|
|
|
// CHECK: {{^}}private{{(\*/)?}} var AB_privateGlobal
|
|
// CHECK: {{^}}internal{{(\*/)?}} var AC_internalGlobal
|
|
// CHECK: {{^}}public{{(\*/)?}} var AD_publicGlobal
|
|
// CHECK: {{^}}fileprivate{{(\*/)?}} var AE_fileprivateGlobal
|
|
private var AB_privateGlobal = 0
|
|
internal var AC_internalGlobal = 0
|
|
public var AD_publicGlobal = 0
|
|
fileprivate var AE_fileprivateGlobal = 0
|
|
|
|
|
|
// CHECK-LABEL: internal struct BA_DefaultStruct {
|
|
struct BA_DefaultStruct {
|
|
// CHECK: internal let x
|
|
let x = 0
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} struct BB_PrivateStruct {
|
|
private struct BB_PrivateStruct {
|
|
// CHECK: internal var x
|
|
var x = 0
|
|
// CHECK: internal init(x: Int = 0)
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: internal{{(\*/)?}} struct BC_InternalStruct {
|
|
internal struct BC_InternalStruct {
|
|
// CHECK: internal let x
|
|
let x = 0
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} struct BD_PublicStruct {
|
|
public struct BD_PublicStruct {
|
|
// CHECK: internal var x
|
|
var x = 0
|
|
// CHECK: internal init(x: Int = 0)
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} struct BE_PublicStructPrivateMembers {
|
|
public struct BE_PublicStructPrivateMembers {
|
|
// CHECK: private{{(\*/)?}} var x
|
|
private var x = 0
|
|
// CHECK: private init(x: Int = 0)
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: {{^}}fileprivate{{(\*/)?}} struct BF_FilePrivateStruct {
|
|
fileprivate struct BF_FilePrivateStruct {
|
|
// CHECK: {{^}} internal var x
|
|
var x = 0
|
|
// CHECK: {{^}} internal init(x: Int = 0)
|
|
// CHECK: {{^}} internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} class CA_PrivateClass
|
|
private class CA_PrivateClass {
|
|
// CHECK: {{^}} deinit
|
|
deinit {}
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: internal{{(\*/)?}} class CB_InternalClass
|
|
internal class CB_InternalClass {
|
|
// CHECK: {{^}} deinit
|
|
deinit {}
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} class CC_PublicClass
|
|
public class CC_PublicClass {
|
|
// CHECK: {{^}} deinit
|
|
deinit {}
|
|
// CHECK: internal init()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} enum DA_PrivateEnum {
|
|
private enum DA_PrivateEnum {
|
|
// CHECK: {{^}} case Foo
|
|
// CHECK: Bar
|
|
case Foo, Bar
|
|
// CHECK: internal init()
|
|
init() { self = .Foo }
|
|
// CHECK: private var hashValue
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: internal{{(\*/)?}} enum DB_InternalEnum {
|
|
internal enum DB_InternalEnum {
|
|
// CHECK: {{^}} case Foo
|
|
// CHECK: Bar
|
|
case Foo, Bar
|
|
// CHECK: internal init()
|
|
init() { self = .Foo }
|
|
// CHECK: internal var hashValue
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} enum DC_PublicEnum {
|
|
public enum DC_PublicEnum {
|
|
// CHECK: {{^}} case Foo
|
|
// CHECK: Bar
|
|
case Foo, Bar
|
|
// CHECK: internal init()
|
|
init() { self = .Foo }
|
|
// CHECK: public var hashValue
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} protocol EA_PrivateProtocol {
|
|
private protocol EA_PrivateProtocol {
|
|
// CHECK: {{^}} associatedtype Foo
|
|
associatedtype Foo
|
|
// CHECK: {{^}} var Bar
|
|
var Bar: Int { get }
|
|
// CHECK: {{^}} func baz()
|
|
func baz()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} protocol EB_PublicProtocol {
|
|
public protocol EB_PublicProtocol {
|
|
// CHECK: {{^}} associatedtype Foo
|
|
associatedtype Foo
|
|
// CHECK: {{^}} var Bar
|
|
var Bar: Int { get }
|
|
// CHECK: {{^}} func baz()
|
|
func baz()
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
private class FA_PrivateClass {}
|
|
internal class FB_InternalClass {}
|
|
public class FC_PublicClass {}
|
|
// CHECK-SRC: {{^}}ex
|
|
// CHECK-LABEL: tension FA_PrivateClass {
|
|
extension FA_PrivateClass {
|
|
// CHECK: internal func a()
|
|
func a() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: extension FB_InternalClass {
|
|
extension FB_InternalClass {
|
|
// CHECK: internal func a()
|
|
func a() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: extension FC_PublicClass {
|
|
extension FC_PublicClass {
|
|
// CHECK: internal func a()
|
|
func a() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
private class FD_PrivateClass {}
|
|
// CHECK-SRC: private
|
|
// CHECK-LABEL: extension FD_PrivateClass {
|
|
private extension FD_PrivateClass {
|
|
// CHECK: private func explicitPrivateExt()
|
|
func explicitPrivateExt() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
public class FE_PublicClass {}
|
|
// CHECK-SRC: private
|
|
// CHECK-LABEL: extension FE_PublicClass {
|
|
private extension FE_PublicClass {
|
|
// CHECK: private func explicitPrivateExt()
|
|
func explicitPrivateExt() {}
|
|
// CHECK: private struct PrivateNested {
|
|
struct PrivateNested {
|
|
// CHECK: internal var x
|
|
var x: Int
|
|
} // CHECK: }
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-SRC: internal
|
|
// CHECK-LABEL: extension FE_PublicClass {
|
|
internal extension FE_PublicClass {
|
|
// CHECK: internal func explicitInternalExt()
|
|
func explicitInternalExt() {}
|
|
// CHECK: internal struct InternalNested {
|
|
struct InternalNested {
|
|
// CHECK: internal var x
|
|
var x: Int
|
|
} // CHECK: }
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-SRC: public
|
|
// CHECK-LABEL: extension FE_PublicClass {
|
|
public extension FE_PublicClass {
|
|
// CHECK: public func explicitPublicExt()
|
|
func explicitPublicExt() {}
|
|
// CHECK: public struct PublicNested {
|
|
struct PublicNested {
|
|
// CHECK: internal var x
|
|
var x: Int
|
|
} // CHECK: }
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
// CHECK-LABEL: internal func GA_localTypes()
|
|
func GA_localTypes() {
|
|
// CHECK-SRC: private struct Local {
|
|
struct Local {
|
|
// CHECK-SRC: internal let x
|
|
let x = 0
|
|
}
|
|
_ = Local()
|
|
|
|
// CHECK-SRC: private enum LocalEnum {
|
|
enum LocalEnum {
|
|
// CHECK-SRC: {{^}} case A
|
|
case A, B
|
|
}
|
|
let enumVal = LocalEnum.A
|
|
_ = (enumVal == .B)
|
|
} // CHECK-SRC: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} struct GB_NestedOuter {
|
|
public struct GB_NestedOuter {
|
|
// CHECK: internal struct Inner {
|
|
struct Inner {
|
|
// CHECK: private{{(\*/)?}} let x
|
|
private let x = 0
|
|
// CHECK: internal let y
|
|
let y = 0
|
|
}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} struct GC_NestedOuterPrivate {
|
|
private struct GC_NestedOuterPrivate {
|
|
// CHECK: internal struct Inner {
|
|
struct Inner {
|
|
// CHECK: private{{(\*/)?}} let x
|
|
private let x = 0
|
|
// CHECK: internal let y
|
|
let y = 0
|
|
}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
|
|
public protocol HA_PublicProtocol {
|
|
associatedtype Assoc
|
|
}
|
|
internal protocol HB_InternalProtocol {
|
|
associatedtype Assoc
|
|
}
|
|
private protocol HC_PrivateProtocol {
|
|
associatedtype Assoc
|
|
}
|
|
public struct HA_PublicStruct {}
|
|
internal struct HB_InternalStruct {}
|
|
private struct HC_PrivateStruct {}
|
|
|
|
// CHECK-LABEL: extension HA_PublicProtocol {
|
|
extension HA_PublicProtocol {
|
|
// CHECK: internal func unconstrained()
|
|
func unconstrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: extension HA_PublicProtocol where Self.Assoc == HA_PublicStruct {
|
|
extension HA_PublicProtocol where Assoc == HA_PublicStruct {
|
|
// CHECK: internal func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HA_PublicProtocol where Self.Assoc == HB_InternalStruct {
|
|
extension HA_PublicProtocol where Assoc == HB_InternalStruct {
|
|
// CHECK: internal func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HA_PublicProtocol where Self.Assoc == HC_PrivateStruct {
|
|
extension HA_PublicProtocol where Assoc == HC_PrivateStruct {
|
|
// CHECK: private func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HB_InternalProtocol {
|
|
extension HB_InternalProtocol {
|
|
// CHECK: internal func unconstrained()
|
|
func unconstrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HB_InternalProtocol where Self.Assoc == HA_PublicStruct {
|
|
extension HB_InternalProtocol where Assoc == HA_PublicStruct {
|
|
// CHECK: internal func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HB_InternalProtocol where Self.Assoc == HB_InternalStruct {
|
|
extension HB_InternalProtocol where Assoc == HB_InternalStruct {
|
|
// CHECK: internal func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HB_InternalProtocol where Self.Assoc == HC_PrivateStruct {
|
|
extension HB_InternalProtocol where Assoc == HC_PrivateStruct {
|
|
// CHECK: private func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HC_PrivateProtocol {
|
|
extension HC_PrivateProtocol {
|
|
// CHECK: internal func unconstrained()
|
|
func unconstrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HC_PrivateProtocol where Self.Assoc == HA_PublicStruct {
|
|
extension HC_PrivateProtocol where Assoc == HA_PublicStruct {
|
|
// CHECK: private func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HC_PrivateProtocol where Self.Assoc == HB_InternalStruct {
|
|
extension HC_PrivateProtocol where Assoc == HB_InternalStruct {
|
|
// CHECK: private func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
// CHECK-LABEL: extension HC_PrivateProtocol where Self.Assoc == HC_PrivateStruct {
|
|
extension HC_PrivateProtocol where Assoc == HC_PrivateStruct {
|
|
// CHECK: private func constrained()
|
|
func constrained() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
public protocol IA_PublicAssocTypeProto {
|
|
associatedtype PublicValue
|
|
var publicValue: PublicValue { get }
|
|
}
|
|
fileprivate protocol IB_FilePrivateAssocTypeProto {
|
|
associatedtype FilePrivateValue
|
|
var filePrivateValue: FilePrivateValue { get }
|
|
}
|
|
// CHECK-LABEL: public{{(\*/)?}} class IC_PublicAssocTypeImpl : IA_PublicAssocTypeProto, IB_FilePrivateAssocTypeProto {
|
|
public class IC_PublicAssocTypeImpl: IA_PublicAssocTypeProto, IB_FilePrivateAssocTypeProto {
|
|
public var publicValue: Int = 0
|
|
public var filePrivateValue: Int = 0
|
|
// CHECK-DAG: {{^}} public typealias PublicValue
|
|
// CHECK-DAG: {{^}} public typealias FilePrivateValue
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: private{{(\*/)?}} class ID_PrivateAssocTypeImpl : IA_PublicAssocTypeProto, IB_FilePrivateAssocTypeProto {
|
|
private class ID_PrivateAssocTypeImpl: IA_PublicAssocTypeProto, IB_FilePrivateAssocTypeProto {
|
|
public var publicValue: Int = 0
|
|
public var filePrivateValue: Int = 0
|
|
// CHECK-DAG: {{^}} fileprivate typealias PublicValue
|
|
// CHECK-DAG: {{^}} fileprivate typealias FilePrivateValue
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: class MultipleAttributes {
|
|
class MultipleAttributes {
|
|
// CHECK: {{^}} final {{(/\*)?private(\*/)?}} func foo()
|
|
final private func foo() {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} class PublicInitBase {
|
|
public class PublicInitBase {
|
|
// CHECK: {{^}} {{(/\*)?public(\*/)?}} init()
|
|
public init() {}
|
|
// CHECK: {{^}} {{(/\*)?fileprivate(\*/)?}} init(other: PublicInitBase)
|
|
fileprivate init(other: PublicInitBase) {}
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: public{{(\*/)?}} class PublicInitInheritor : PublicInitBase {
|
|
public class PublicInitInheritor : PublicInitBase {
|
|
// CHECK: {{^}} override public init()
|
|
// CHECK: {{^}} override fileprivate init(other: PublicInitBase)
|
|
} // CHECK: {{^[}]}}
|
|
|
|
// CHECK-LABEL: {{(/\*)?private(\*/)?}} class PublicInitPrivateInheritor : PublicInitBase {
|
|
private class PublicInitPrivateInheritor : PublicInitBase {
|
|
// CHECK: {{^}} override internal init()
|
|
// CHECK: {{^}} override fileprivate init(other: PublicInitBase)
|
|
} // CHECK: {{^[}]}}
|