Skip to content

Commit a3e6de7

Browse files
authored
Fix overloaded case diagnostic (#152)
It is currently applied to code that has been rewritten, which breaks the Xcode integration and hides the error. By delaying the rewriting, we can restore the position of the error when it's emitted.
1 parent e593aba commit a3e6de7

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

Sources/CasePathsMacros/CasePathableMacro.swift

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,7 @@ extension CasePathableMacro: MemberMacro {
6464
}
6565
let enumName = enumDecl.name.trimmed
6666

67-
let rewriter = SelfRewriter(selfEquivalent: enumName)
68-
let memberBlock = rewriter.rewrite(enumDecl.memberBlock).cast(MemberBlockSyntax.self)
69-
70-
let enumCaseDecls = memberBlock
71-
.members
67+
let enumCaseDecls = enumDecl.memberBlock.members
7268
.flatMap { $0.decl.as(EnumCaseDeclSyntax.self)?.elements ?? [] }
7369

7470
var seenCaseNames: Set<String> = []
@@ -85,8 +81,9 @@ extension CasePathableMacro: MemberMacro {
8581
seenCaseNames.insert(name)
8682
}
8783

84+
let rewriter = SelfRewriter(selfEquivalent: enumName)
85+
let memberBlock = rewriter.rewrite(enumDecl.memberBlock).cast(MemberBlockSyntax.self)
8886
let casePaths = generateDeclSyntax(from: memberBlock.members, enumName: enumName)
89-
9087
return [
9188
"""
9289
public struct AllCasePaths {

0 commit comments

Comments
 (0)