55// Created by Larry Zeng on 11/26/25.
66//
77
8+ /// This enum represents the access level of an extension in Swift, with a few extra cases
89public enum ExtensionAccessor : ExpressibleByUnicodeScalarLiteral , Sendable , Codable {
910 public typealias UnicodeScalarLiteralType = String
1011
12+ /// Same as public keyword
1113 case `public`
14+ /// Same as package keyword
1215 case package
16+ /// Same as internal keyword
1317 case `internal`
18+ /// Same as fileprivate keyword
1419 case `fileprivate`
20+ /// Same as private keyword
1521 case `private`
22+ /// This specifier indicates that the extension should follow the access level of the type it extends
1623 case follow
24+ /// Represents an unknown or unsupported access level, which will be raised as macro error.
1725 case unknown( String )
1826
27+ /// All allowed cases for ExtensionAccessor
28+ ///
29+ /// This includes all the defined access levels except for the ``ExtensionAccessor/unknown(_:)`` case.
1930 public static var allowedCases : [ ExtensionAccessor ] {
2031 [ . public, . package , . internal, . fileprivate, . private, . follow]
2132 }
2233
34+ /// A textual representation of the access level.
2335 public var description : String {
2436 switch self {
2537 case . public: " public "
@@ -32,6 +44,10 @@ public enum ExtensionAccessor: ExpressibleByUnicodeScalarLiteral, Sendable, Coda
3244 }
3345 }
3446
47+ /// Initializes an `ExtensionAccessor` from a unicode scalar literal.
48+ ///
49+ /// - Note: It tries to match the provided string with valid levels specified in ``ExtensionAccessor/allowedCases``,
50+ /// or default to ``ExtensionAccessor/unknown(_:)``.
3551 public init ( unicodeScalarLiteral value: String ) {
3652 self = ExtensionAccessor
3753 . allowedCases
0 commit comments