| 12345678910111213141516171819202122232425262728293031 |
- //
- // 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)"
- }
- )
- ]
- }
- }
|