@@ -20,11 +20,17 @@ extension SyntaxProtocol {
20
20
}
21
21
}
22
22
23
- @_cdecl ( " swift_ASTGen_printMacroResult " )
24
- public func printMacroResult(
25
- sourceFilePtr: UnsafeRawPointer ,
26
- sourceLocationPtr: UnsafePointer < UInt8 > ?
23
+ @_cdecl ( " swift_ASTGen_evaluateMacro " )
24
+ public func evaluateMacro(
25
+ sourceFilePtr: UnsafePointer < UInt8 > ,
26
+ sourceLocationPtr: UnsafePointer < UInt8 > ? ,
27
+ expandedSourcePointer: UnsafeMutablePointer < UnsafePointer < UInt8 > ? > ,
28
+ expandedSourceLength: UnsafeMutablePointer < Int >
27
29
) -> Int {
30
+ // We didn't expand anything so far.
31
+ expandedSourcePointer. pointee = nil
32
+ expandedSourceLength. pointee = 0
33
+
28
34
guard let sourceLocationPtr = sourceLocationPtr else {
29
35
print ( " NULL source location " )
30
36
return - 1
@@ -68,7 +74,17 @@ public func printMacroResult(
68
74
/* TODO: Report errors */
69
75
}
70
76
71
- print ( " Macro rewrite: \( parentSyntax. withoutTrivia ( ) ) --> \( evaluatedSyntax. withoutTrivia ( ) ) " )
77
+ var evaluatedSyntaxStr = evaluatedSyntax. withoutTrivia ( ) . description
78
+ evaluatedSyntaxStr. withUTF8 { utf8 in
79
+ let evaluatedResultPtr = UnsafeMutablePointer< UInt8> . allocate( capacity: utf8. count + 1 )
80
+ if let baseAddress = utf8. baseAddress {
81
+ evaluatedResultPtr. initialize ( from: baseAddress, count: utf8. count)
82
+ }
83
+ evaluatedResultPtr [ utf8. count] = 0
84
+
85
+ expandedSourcePointer. pointee = UnsafePointer ( evaluatedResultPtr)
86
+ expandedSourceLength. pointee = utf8. count + 1
87
+ }
72
88
73
89
return 0
74
90
}
0 commit comments