@@ -38,7 +38,7 @@ private let rowCharWidth: Int = 30
38
38
/// Additionally, when matching fails, the function prints console output with the two results compared.
39
39
@_cdecl ( " swift_ASTGen_validateUnqualifiedLookup " )
40
40
public func unqualifiedLookup(
41
- sourceFilePtr: UnsafeRawPointer ,
41
+ sourceFilePtr: UnsafeMutableRawPointer ,
42
42
astContext: BridgedASTContext ,
43
43
lookupAt: BridgedSourceLoc ,
44
44
finishInSequentialScope: Bool ,
@@ -51,10 +51,7 @@ public func unqualifiedLookup(
51
51
return false
52
52
}
53
53
let sourceLocationConverter = sourceFile. pointee. sourceLocationConverter
54
- let buildConfiguration = CompilerBuildConfiguration (
55
- ctx: astContext,
56
- sourceBuffer: sourceFile. pointee. buffer
57
- )
54
+ let configuredRegions = sourceFile. pointee. configuredRegions ( astContext: astContext)
58
55
59
56
guard let lookupPosition = sourceFile. pointee. position ( of: lookupAt) ,
60
57
let lookupToken = sourceFileSyntax. token ( at: lookupPosition)
@@ -73,7 +70,7 @@ public func unqualifiedLookup(
73
70
let sllResults = sllConsumedResults (
74
71
lookupToken: lookupToken,
75
72
finishInSequentialScope: finishInSequentialScope,
76
- configuredRegions: sourceFileSyntax . configuredRegions ( in : buildConfiguration )
73
+ configuredRegions: configuredRegions
77
74
)
78
75
79
76
// Add header to the output
@@ -201,11 +198,39 @@ private func sllConsumedResults(
201
198
finishInSequentialScope: Bool ,
202
199
configuredRegions: ConfiguredRegions
203
200
) -> [ ConsumedLookupResult ] {
204
- lookupToken. lookup (
201
+ let resultsWithoutMacroReordering = lookupToken. lookup (
205
202
nil ,
206
203
with: LookupConfig ( finishInSequentialScope: finishInSequentialScope, configuredRegions: configuredRegions)
207
204
)
208
- . flatMap { result in
205
+
206
+ // Early reordering of macro declaration parameters with its generic parameters.
207
+ var results : [ LookupResult ] = [ ]
208
+ var previousMacroResult : LookupResult ?
209
+
210
+ for result in resultsWithoutMacroReordering {
211
+ if let unwrappedMacroResult = previousMacroResult,
212
+ result. scope. is ( GenericParameterClauseSyntax . self)
213
+ {
214
+ results += [ result, unwrappedMacroResult]
215
+ previousMacroResult = nil
216
+ continue
217
+ } else if let unwrappedMacroResult = previousMacroResult {
218
+ results. append ( unwrappedMacroResult)
219
+ previousMacroResult = nil
220
+ }
221
+
222
+ if result. scope. is ( MacroDeclSyntax . self) {
223
+ previousMacroResult = result
224
+ } else {
225
+ results. append ( result)
226
+ }
227
+ }
228
+
229
+ if let previousMacroResult {
230
+ results. append ( previousMacroResult)
231
+ }
232
+
233
+ return results. flatMap { result in
209
234
switch result {
210
235
case . lookInMembers( let lookInMembers) :
211
236
return [
0 commit comments