Closed
Description
The following recursive expansion of a macro causes an infinite loop in MacroSystem
, which is used by assertMacroExpansion
. The compiler diagnoses the circular evaluation of the macro. MacroSystem
should do the same.
struct InfiniteRecursionMacro: ExpressionMacro {
static func expansion(of node: some FreestandingMacroExpansionSyntax, in context: some MacroExpansionContext) throws -> ExprSyntax {
return "#infiniteRecursion"
}
}
final class MacroSystemTests: XCTestCase {
func testInfiniteRecursion() {
assertMacroExpansion("#infiniteRecursion", expandedSource: "", macros: ["infiniteRecursion": InfiniteRecursionMacro.self])
}
}