{"record":{"id":"7557315c054745ff","repo":"shadcn-ui/ui","slug":"file-symbol-issue-reason","errorCode":null,"errorMessage":"  - ${file}${symbol}: ${issue.reason}","messagePattern":"  - \\$\\{file\\}\\$\\{symbol\\}: \\$\\{issue\\.reason\\}","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"packages/shadcn/src/migrations/cn/index.ts","lineNumber":185,"sourceCode":"  const match = version.match(/(?:^|[^0-9])(\\d+)(?:\\.|$)/)\n  return match ? Number(match[1]) : null\n}\n\nfunction printUnsupportedIssues(issues: CnMigrationIssue[], cwd: string) {\n  if (!issues.length) {\n    return\n  }\n\n  logger.break()\n  logger.warn(\n    `Manual review required for ${issues.length} item${\n      issues.length === 1 ? \"\" : \"s\"\n    }:`\n  )\n  for (const issue of issues) {\n    const file = issue.file ? path.relative(cwd, issue.file) : \"unknown file\"\n    const symbol = issue.symbol ? ` (${issue.symbol})` : \"\"\n    logger.warn(`  - ${file}${symbol}: ${issue.reason}`)\n  }\n}\n","sourceCodeStart":167,"sourceCodeEnd":188,"githubUrl":"https://github.com/shadcn-ui/ui/blob/5c7072da672b0048bc6771e3204063a2537df91a/packages/shadcn/src/migrations/cn/index.ts#L167-L188","documentation":"This is the per-item detail line printed under the manual-review header by printUnsupportedIssues: a relative file path, an optional symbol name in parentheses, and the reason the transformer skipped it. Like error 8 it is a logged warning line, one per unsupported CnMigrationIssue, guiding the developer to the exact code to migrate by hand.","triggerScenarios":"Emitted for every issue in the unsupported list of a migrateCn run; `unknown file` appears if issue.file is falsy, and the symbol segment is omitted when issue.symbol is undefined.","commonSituations":"Locating which helper or import in which file could not be auto-migrated — e.g. `src/lib/utils.ts (cn): custom twMerge configuration not supported`.","solutions":["Open the reported file at the reported symbol and rewrite the usage to use the new cn package manually.","Address the specific reason given (e.g. replace a custom twMerge config with the supported setup).","After fixing, rerun the migration or its dry check and confirm the item disappears from the list."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// parse each '  - <file>(<symbol>): <reason>' warning line and open tickets\nconst items = cliOutput.match(/^\\s{2}- .+$/gm) ?? []\nfor (const item of items) logger.warn(`Needs manual migration: ${item.trim()}`)","preventionTips":["Fix each reported file/symbol directly using the printed reason.","Standardize imports of clsx/tailwind-merge so the transformer recognizes them.","Rerun the migration after manual fixes to confirm the list is empty."],"tags":["manual-review","migration","diagnostic"],"backgroundTag":"manual-review-required","analyzedSha":"5c7072da672b0048bc6771e3204063a2537df91a","analyzedAt":"2026-09-07T00:08:47.579Z","contentChangedAt":"2026-09-07T00:08:47.579Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}