diff --git a/lib/ASTGen/Sources/ASTGen/Decls.swift b/lib/ASTGen/Sources/ASTGen/Decls.swift index 444c167b50e33..815bb696b137b 100644 --- a/lib/ASTGen/Sources/ASTGen/Decls.swift +++ b/lib/ASTGen/Sources/ASTGen/Decls.swift @@ -39,7 +39,7 @@ extension ASTGenVisitor { declContext = out.declContext defer { declContext = oldDeclContext } - node.members.members + node.memberBlock.members .map { self.visit($0).rawValue } .withBridgedArrayRef { ref in NominalTypeDecl_setMembers(out.nominalDecl, ref) @@ -60,7 +60,7 @@ extension ASTGenVisitor { declContext = out.declContext defer { declContext = oldDeclContext } - node.members.members + node.memberBlock.members .map { self.visit($0).rawValue } .withBridgedArrayRef { ref in NominalTypeDecl_setMembers(out.nominalDecl, ref) diff --git a/lib/ASTGen/Sources/ASTGen/Generics.swift b/lib/ASTGen/Sources/ASTGen/Generics.swift index d50462585ca14..22163381143b0 100644 --- a/lib/ASTGen/Sources/ASTGen/Generics.swift +++ b/lib/ASTGen/Sources/ASTGen/Generics.swift @@ -23,9 +23,20 @@ extension ASTGenVisitor { let nameLoc = self.base.advanced(by: node.name.position.utf8Offset).raw let eachLoc = node.each.map { self.base.advanced(by: $0.position.utf8Offset).raw } + var genericParameterIndex: Int? + for (index, sibling) in (node.parent?.as(GenericParameterListSyntax.self) ?? []).enumerated() { + if sibling == node { + genericParameterIndex = index + break + } + } + guard let genericParameterIndex = genericParameterIndex else { + preconditionFailure("Node not part of the parent?") + } + return .decl( GenericTypeParamDecl_create( - self.ctx, self.declContext, name, nameLoc, eachLoc, node.indexInParent / 2, + self.ctx, self.declContext, name, nameLoc, eachLoc, genericParameterIndex, eachLoc != nil)) } } diff --git a/lib/ASTGen/Sources/ASTGen/Macros.swift b/lib/ASTGen/Sources/ASTGen/Macros.swift index 52b36eb9f3d6d..6d9619e4b0b7b 100644 --- a/lib/ASTGen/Sources/ASTGen/Macros.swift +++ b/lib/ASTGen/Sources/ASTGen/Macros.swift @@ -546,7 +546,7 @@ func expandFreestandingMacroInProcess( guard let parentExpansion = macroSyntax.asProtocol( FreestandingMacroExpansionSyntax.self ) else { - print("not on a macro expansion node: \(macroSyntax.recursiveDescription)") + print("not on a macro expansion node: \(macroSyntax.debugDescription)") return nil } @@ -671,7 +671,7 @@ private func findSyntaxNodeInSourceFile( currentSyntax = parentSyntax } - print("unable to find node: \(token.recursiveDescription)") + print("unable to find node: \(token.debugDescription)") return nil } diff --git a/lib/Macros/Sources/ObservationMacros/ObservableMacro.swift b/lib/Macros/Sources/ObservationMacros/ObservableMacro.swift index 47a092e558ee9..d31499d978964 100644 --- a/lib/Macros/Sources/ObservationMacros/ObservableMacro.swift +++ b/lib/Macros/Sources/ObservationMacros/ObservableMacro.swift @@ -71,7 +71,7 @@ public struct ObservableMacro: MemberMacro, MemberAttributeMacro, ConformanceMac """ let memberList = MemberDeclListSyntax( - declaration.members.members.filter { + declaration.memberBlock.members.filter { $0.decl.isObservableStoredProperty } ) diff --git a/lib/Macros/Sources/SwiftMacros/OptionSetMacro.swift b/lib/Macros/Sources/SwiftMacros/OptionSetMacro.swift index 38f89b8ad2509..dabb64f9ea6a3 100644 --- a/lib/Macros/Sources/SwiftMacros/OptionSetMacro.swift +++ b/lib/Macros/Sources/SwiftMacros/OptionSetMacro.swift @@ -97,7 +97,7 @@ public struct OptionSetMacro { } // Find the option enum within the struct. - let optionsEnums: [EnumDeclSyntax] = decl.members.members.compactMap({ member in + let optionsEnums: [EnumDeclSyntax] = decl.memberBlock.members.compactMap({ member in if let enumDecl = member.decl.as(EnumDeclSyntax.self), enumDecl.identifier.text == optionsEnumName { return enumDecl @@ -163,7 +163,7 @@ extension OptionSetMacro: MemberMacro { // Find all of the case elements. var caseElements: [EnumCaseElementSyntax] = [] - for member in optionsEnum.members.members { + for member in optionsEnum.memberBlock.members { if let caseDecl = member.decl.as(EnumCaseDeclSyntax.self) { caseElements.append(contentsOf: caseDecl.elements) } diff --git a/test/Macros/Inputs/syntax_macro_definitions.swift b/test/Macros/Inputs/syntax_macro_definitions.swift index 589a007dd4546..86061d558e1ea 100644 --- a/test/Macros/Inputs/syntax_macro_definitions.swift +++ b/test/Macros/Inputs/syntax_macro_definitions.swift @@ -136,7 +136,7 @@ public enum AddBlocker: ExpressionMacro { ExprSyntax( binOp.with( \.operatorToken, - binOp.operatorToken.withKind(.binaryOperator("-")) + binOp.operatorToken.with(\.tokenKind, .binaryOperator("-")) ) ) ) @@ -681,7 +681,7 @@ extension DeclGroupSyntax { /// Enumerate the stored properties that syntactically occur in this /// declaration. func storedProperties() -> [VariableDeclSyntax] { - return members.members.compactMap { member in + return memberBlock.members.compactMap { member in guard let variable = member.decl.as(VariableDeclSyntax.self), variable.isStoredProperty else { return nil @@ -1020,7 +1020,7 @@ public struct ObservableMacro: MemberMacro, MemberAttributeMacro { """ let memberList = MemberDeclListSyntax( - declaration.members.members.filter { + declaration.memberBlock.members.filter { $0.decl.isObservableStoredProperty } )