@@ -18005,7 +18005,8 @@ function printErrorSummary(category, message) {
1800518005 case ErrorCategory.StaticComponents:
1800618006 case ErrorCategory.Suppression:
1800718007 case ErrorCategory.Syntax:
18008- case ErrorCategory.UseMemo: {
18008+ case ErrorCategory.UseMemo:
18009+ case ErrorCategory.VoidUseMemo: {
1800918010 heading = 'Error';
1801018011 break;
1801118012 }
@@ -18036,6 +18037,7 @@ var ErrorCategory;
1803618037 ErrorCategory["CapitalizedCalls"] = "CapitalizedCalls";
1803718038 ErrorCategory["StaticComponents"] = "StaticComponents";
1803818039 ErrorCategory["UseMemo"] = "UseMemo";
18040+ ErrorCategory["VoidUseMemo"] = "VoidUseMemo";
1803918041 ErrorCategory["Factories"] = "Factories";
1804018042 ErrorCategory["PreserveManualMemo"] = "PreserveManualMemo";
1804118043 ErrorCategory["IncompatibleLibrary"] = "IncompatibleLibrary";
@@ -18302,6 +18304,15 @@ function getRuleForCategoryImpl(category) {
1830218304 preset: LintRulePreset.Recommended,
1830318305 };
1830418306 }
18307+ case ErrorCategory.VoidUseMemo: {
18308+ return {
18309+ category,
18310+ severity: ErrorSeverity.Error,
18311+ name: 'void-use-memo',
18312+ description: 'Validates that useMemos always return a value. See [`useMemo()` docs](https://react.dev/reference/react/useMemo) for more information.',
18313+ preset: LintRulePreset.RecommendedLatest,
18314+ };
18315+ }
1830518316 case ErrorCategory.IncompatibleLibrary: {
1830618317 return {
1830718318 category,
@@ -44582,7 +44593,7 @@ function dropManualMemoization(func) {
4458244593 if (funcToCheck !== undefined && funcToCheck.loweredFunc.func) {
4458344594 if (!hasNonVoidReturn(funcToCheck.loweredFunc.func)) {
4458444595 errors.pushDiagnostic(CompilerDiagnostic.create({
44585- category: ErrorCategory.UseMemo ,
44596+ category: ErrorCategory.VoidUseMemo ,
4458644597 reason: 'useMemo() callbacks must return a value',
4458744598 description: `This ${manualMemo.loadInstr.value.kind === 'PropertyLoad'
4458844599 ? 'React.useMemo'
0 commit comments