blob: 5b6b54e61ca35dc1f6648f7c5221380401b64d21 [file] [log] [blame]
// RUN: %target-parse-verify-swift
// RUN: %target-swift-frontend -emit-silgen %s | FileCheck %s
// This file tests that the AST produced after fixing accessibility warnings
// is valid according to SILGen and the verifiers.
public struct PublicStruct {
// CHECK-DAG: sil{{( \[.+\])*}} @_TFV22accessibility_warnings12PublicStructg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings12PublicStructCfT_S0_
}
internal struct InternalStruct {
public var publicVar = 0
public private(set) var publicVarPrivateSet = 0
public public(set) var publicVarPublicSet = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg16publicVarGetOnlySi
public var publicVarGetOnly: Int { return 0 }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg15publicVarGetSetSi
public var publicVarGetSet: Int { get { return 0 } set {} }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructCfT_S0_
}
private struct PrivateStruct {
public var publicVar = 0
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructCfT_S0_
}
extension PublicStruct {
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
extension InternalStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
extension PrivateStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructCfT1xSi_S0_
public init(x: Int) { self.init() }
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStructg18publicVarExtensionSi
public var publicVarExtension: Int { get { return 0 } set {} }
}
public extension PublicStruct {
// CHECK-DAG: sil @_TFV22accessibility_warnings12PublicStruct15extMemberPublicfT_T_
public func extMemberPublic() {}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0213extImplPublicfT_T_
private func extImplPublic() {}
}
internal extension PublicStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings12PublicStruct17extMemberInternalfT_T_
public func extMemberInternal() {} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0215extImplInternalfT_T_
private func extImplInternal() {}
}
private extension PublicStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0216extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings12PublicStructP33_5D2F2E026754A901C0FF90C404896D0214extImplPrivatefT_T_
private func extImplPrivate() {}
}
internal extension InternalStruct {
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings14InternalStruct17extMemberInternalfT_T_
public func extMemberInternal() {} // expected-warning {{declaring a public instance method in an internal extension}} {{3-9=internal}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0215extImplInternalfT_T_
private func extImplInternal() {}
}
private extension InternalStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0216extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warnings14InternalStructP33_5D2F2E026754A901C0FF90C404896D0214extImplPrivatefT_T_
private func extImplPrivate() {}
}
private extension PrivateStruct {
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStruct16extMemberPrivatefT_T_
public func extMemberPrivate() {} // expected-warning {{declaring a public instance method in a private extension}} {{3-9=private}}
// CHECK-DAG: sil private @_TFV22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0213PrivateStruct14extImplPrivatefT_T_
private func extImplPrivate() {}
}
public protocol PublicReadOnlyOperations {
var size: Int { get }
subscript (_: Int) -> Int { get }
}
internal struct PrivateSettersForReadOnlyInternal : PublicReadOnlyOperations {
// CHECK-DAG: sil hidden{{( \[.+\])*}} @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternalg4sizeSi
public private(set) var size = 0
// CHECK-DAG: sil hidden @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternalg9subscriptFSiSi
// CHECK-DAG: sil private @_TFV22accessibility_warnings33PrivateSettersForReadOnlyInternals9subscriptFSiSi
internal private(set) subscript (_: Int) -> Int { // no-warning
get { return 42 }
set {}
}
}
public class PublicClass {
// CHECK-DAG: sil{{( \[.+\])*}} @_TFC22accessibility_warnings11PublicClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings11PublicClasscfT_S0_
}
internal class InternalClass {
// CHECK-DAG: sil hidden{{( \[.+\])*}} @_TFC22accessibility_warnings13InternalClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil hidden [transparent] @_TFC22accessibility_warnings13InternalClassg19publicVarPrivateSetSi
public private(set) var publicVarPrivateSet = 0
public public(set) var publicVarPublicSet = 0
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClassg16publicVarGetOnlySi
public var publicVarGetOnly: Int { return 0 }
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClassg15publicVarGetSetSi
public var publicVarGetSet: Int { get { return 0 } set {} }
// CHECK-DAG: sil hidden @_TFC22accessibility_warnings13InternalClasscfT_S0_
}
private class PrivateClass {
// CHECK-DAG: sil private{{( \[.+\])*}} @_TFC22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0212PrivateClassg9publicVarSi
public var publicVar = 0
// CHECK-DAG: sil private @_TFC22accessibility_warningsP33_5D2F2E026754A901C0FF90C404896D0212PrivateClasscfT_S0_
}