From 69247869734374dd3f66076228f78df8ee0ca238 Mon Sep 17 00:00:00 2001 From: Joe Savona Date: Tue, 13 Feb 2024 16:45:17 -0800 Subject: [PATCH] [be] Change validate functions to not return unnecessary Result These validations needs to be able to transitively check for violations within function expressions, without immediately erroring. So the inner "-Impl" helpers return a Result. But the outer, exported validate functions don't need to return a Result, especially since TS has no Rust-style enforcement that return values are actually used. Unwrapping within the validation means the caller can't forget to do so and inadvertently silence the errors. --- .../babel-plugin-react-forget/src/Entrypoint/Pipeline.ts | 4 ++-- .../src/Validation/ValidateNoRefAccesInRender.ts | 6 ++---- .../src/Validation/ValidateNoSetStateInRender.ts | 6 ++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts index 4fc702403f..66cde72c4f 100644 --- a/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts +++ b/compiler/packages/babel-plugin-react-forget/src/Entrypoint/Pipeline.ts @@ -175,11 +175,11 @@ function* runWithEnvironment( } if (env.config.validateRefAccessDuringRender) { - validateNoRefAccessInRender(hir).unwrap(); + validateNoRefAccessInRender(hir); } if (env.config.validateNoSetStateInRender) { - validateNoSetStateInRender(hir).unwrap(); + validateNoSetStateInRender(hir); } inferReactivePlaces(hir); diff --git a/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoRefAccesInRender.ts b/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoRefAccesInRender.ts index 02d0558313..39aa54c41a 100644 --- a/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoRefAccesInRender.ts +++ b/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoRefAccesInRender.ts @@ -24,11 +24,9 @@ import { Err, Ok, Result } from "../Utils/Result"; * Validates that a function does not access a ref value during render. This includes a partial check * for ref values which are accessed indirectly via function expressions. */ -export function validateNoRefAccessInRender( - fn: HIRFunction -): Result { +export function validateNoRefAccessInRender(fn: HIRFunction): void { const refAccessingFunctions: Set = new Set(); - return validateNoRefAccessInRenderImpl(fn, refAccessingFunctions); + validateNoRefAccessInRenderImpl(fn, refAccessingFunctions).unwrap(); } function validateNoRefAccessInRenderImpl( diff --git a/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoSetStateInRender.ts b/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoSetStateInRender.ts index 2fe41f5840..a82dbc0c46 100644 --- a/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoSetStateInRender.ts +++ b/compiler/packages/babel-plugin-react-forget/src/Validation/ValidateNoSetStateInRender.ts @@ -39,11 +39,9 @@ import { Err, Ok, Result } from "../Utils/Result"; * y(); * ``` */ -export function validateNoSetStateInRender( - fn: HIRFunction -): Result { +export function validateNoSetStateInRender(fn: HIRFunction): void { const unconditionalSetStateFunctions: Set = new Set(); - return validateNoSetStateInRenderImpl(fn, unconditionalSetStateFunctions); + validateNoSetStateInRenderImpl(fn, unconditionalSetStateFunctions).unwrap(); } function validateNoSetStateInRenderImpl(