@@ -38,7 +38,7 @@ private let rowCharWidth: Int = 30
3838/// Additionally, when matching fails, the function prints console output with the two results compared.
3939@_cdecl ( " swift_ASTGen_validateUnqualifiedLookup " )
4040public func unqualifiedLookup(
41- sourceFilePtr: UnsafeRawPointer ,
41+ sourceFilePtr: UnsafeMutableRawPointer ,
4242 astContext: BridgedASTContext ,
4343 lookupAt: BridgedSourceLoc ,
4444 finishInSequentialScope: Bool ,
@@ -51,10 +51,7 @@ public func unqualifiedLookup(
5151 return false
5252 }
5353 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)
5855
5956 guard let lookupPosition = sourceFile. pointee. position ( of: lookupAt) ,
6057 let lookupToken = sourceFileSyntax. token ( at: lookupPosition)
@@ -73,7 +70,7 @@ public func unqualifiedLookup(
7370 let sllResults = sllConsumedResults (
7471 lookupToken: lookupToken,
7572 finishInSequentialScope: finishInSequentialScope,
76- configuredRegions: sourceFileSyntax . configuredRegions ( in : buildConfiguration )
73+ configuredRegions: configuredRegions
7774 )
7875
7976 // Add header to the output
@@ -201,11 +198,39 @@ private func sllConsumedResults(
201198 finishInSequentialScope: Bool ,
202199 configuredRegions: ConfiguredRegions
203200) -> [ ConsumedLookupResult ] {
204- lookupToken. lookup (
201+ let resultsWithoutMacroReordering = lookupToken. lookup (
205202 nil ,
206203 with: LookupConfig ( finishInSequentialScope: finishInSequentialScope, configuredRegions: configuredRegions)
207204 )
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
209234 switch result {
210235 case . lookInMembers( let lookInMembers) :
211236 return [
0 commit comments