fix: TS plugin showing warning for global-error file's reset prop (#48756)

The TS plugin incorrectly gives a warning for the `reset` prop in the `global-error.tsx` file. This was previously reported and fixed for the `error.tsx` file.
- https://github.com/vercel/next.js/issues/46573
- https://github.com/vercel/next.js/pull/46898

---

You can see a reproduction on [CodeSandbox](https://codesandbox.io/p/sandbox/summer-dawn-b0gydg?file=%2Fapp%2Flayout.tsx&selection=%5B%7B%22endColumn%22%3A16%2C%22endLineNumber%22%3A18%2C%22startColumn%22%3A16%2C%22startLineNumber%22%3A18%7D%5D) — `global-error.tsx`'s `reset` prop has the following warning: 

```
Props must be serializable for components in the "use client" entry file, "reset" is invalid. ts(71007)
```

I haven't filed an issue for this yet since this was a simple enough fix, but happy to create one if needed :)
This commit is contained in:
Sreetam Das 2023-04-23 23:34:20 +05:30 committed by GitHub
parent 1c007cee2f
commit 06700235dd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -40,6 +40,7 @@ const clientBoundary = {
const diagnostics: ts.Diagnostic[] = []
const isErrorFile = /[\\/]error\.tsx?$/.test(source.fileName)
const isGlobalErrorFile = /[\\/]global-error\.tsx?$/.test(source.fileName)
const props = node.parameters?.[0]?.name
if (props && ts.isObjectBindingPattern(props)) {
@ -57,7 +58,7 @@ const clientBoundary = {
// There's a special case for the error file that the `reset` prop is allowed
// to be a function:
// https://github.com/vercel/next.js/issues/46573
if (!isErrorFile || propName !== 'reset') {
if (!(isErrorFile || isGlobalErrorFile) || propName !== 'reset') {
diagnostics.push({
file: source,
category: ts.DiagnosticCategory.Warning,