From facf2aa5a230906b9decceea01e841eaec82c335 Mon Sep 17 00:00:00 2001 From: fummicc1 Date: Sun, 1 Dec 2024 11:47:39 +0900 Subject: [PATCH] Use uniqueModel for IfMacroModel subModels before rendering so that we can avoid naming duplication after generation --- Sources/MockoloFramework/Models/IfMacroModel.swift | 6 +++--- .../Parsers/SwiftSyntaxExtensions.swift | 10 ++++++++-- .../MockoloFramework/Templates/IfMacroTemplate.swift | 6 +++--- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Sources/MockoloFramework/Models/IfMacroModel.swift b/Sources/MockoloFramework/Models/IfMacroModel.swift index 75e1e55e..4f5ba3bb 100644 --- a/Sources/MockoloFramework/Models/IfMacroModel.swift +++ b/Sources/MockoloFramework/Models/IfMacroModel.swift @@ -17,19 +17,19 @@ final class IfMacroModel: Model { let name: String let offset: Int64 - let entities: [Model] + let entities: [(String, Model)] var modelType: ModelType { return .macro } var fullName: String { - return entities.map {$0.fullName}.joined(separator: "_") + return entities.map {$0.0}.joined(separator: "_") } init(name: String, offset: Int64, - entities: [Model]) { + entities: [(String, Model)]) { self.name = name self.entities = entities self.offset = offset diff --git a/Sources/MockoloFramework/Parsers/SwiftSyntaxExtensions.swift b/Sources/MockoloFramework/Parsers/SwiftSyntaxExtensions.swift index 18e8d3e8..62410e25 100644 --- a/Sources/MockoloFramework/Parsers/SwiftSyntaxExtensions.swift +++ b/Sources/MockoloFramework/Parsers/SwiftSyntaxExtensions.swift @@ -254,8 +254,14 @@ extension IfConfigDeclSyntax { } } } - - let macroModel = IfMacroModel(name: name, offset: self.offset, entities: subModels) + + let uniqueSubModels = uniqueEntities( + in: subModels, + exclude: [:], + fullnames: [] + ).map({ $0 }) + + let macroModel = IfMacroModel(name: name, offset: self.offset, entities: uniqueSubModels) return (macroModel, attrDesc, hasInit) } } diff --git a/Sources/MockoloFramework/Templates/IfMacroTemplate.swift b/Sources/MockoloFramework/Templates/IfMacroTemplate.swift index 728beef5..87720216 100644 --- a/Sources/MockoloFramework/Templates/IfMacroTemplate.swift +++ b/Sources/MockoloFramework/Templates/IfMacroTemplate.swift @@ -20,12 +20,12 @@ extension IfMacroModel { func applyMacroTemplate(name: String, context: RenderContext, arguments: GenerationArguments, - entities: [Model]) -> String { + entities: [(String, Model)]) -> String { let rendered = entities .compactMap { model in - model.render( + model.1.render( context: .init( - overloadingResolvedName: model.name, // FIXME: the name is not resolving overload + overloadingResolvedName: model.0, enclosingType: context.enclosingType, annotatedTypeKind: context.annotatedTypeKind ),