| 1234567891011121314151617181920212223242526272829303132 |
- //
- // EntryDefaultValueMacro.swift
- // ark_ui_basic_macros
- package import SwiftSyntax
- package import SwiftSyntaxMacros
- package struct EntryDefaultValueMacro: AccessorMacro {
- package static func expansion(
- of node: AttributeSyntax,
- providingAccessorsOf declaration: some DeclSyntaxProtocol,
- in context: some MacroExpansionContext
- ) throws -> [AccessorDeclSyntax] {
- guard let varDecl = declaration.as(VariableDeclSyntax.self),
- let binding = varDecl.bindings.first,
- let initializer = binding.initializer else {
- throw MacroExpansionErrorMessage("@__EntryDefaultValue can only be applied to stored properties with initial values")
- }
- let defaultValue = initializer.value
- return [
- AccessorDeclSyntax(
- accessorSpecifier: .keyword(.get),
- body: CodeBlockSyntax {
- "\(defaultValue)"
- }
- )
- ]
- }
- }
|