Thanks for your advice ;-)
i modified code and got error as below: macro parse(a: typed; k: untyped): untyped = result = nnkCaseStmt.newTree(k) for fieldDef in a.getTypeImpl()[2]: let fieldNameIdent = fieldDef[0][0] # error: Expected one of {nnkSym, nnkType, nnkBracketExpr, nnkDotExpr, nnkCheckedFieldExpr, nnkTypeOfExpr}, got nnkCall if nnkDotExpr.newTree(a, fieldNameIdent).hasCustomPragma(opt): result.add nnkOfBranch.newTree( newLit(fieldNameIdent.strVal), nnkStmtList.newTree( nnkAsgn.newTree(nnkDotExpr.newTree(a, fieldNameIdent), newLit("🤔")) ), ) result.add nnkElse.newTree( nnkStmtList.newTree(nnkDiscardStmt.newTree(newEmptyNode())) ) Run