Skip to content

💅 Error Cause capture not working for custom Errors when not in second parameter position #10987

Description

@johntalton

Environment information

Details
CLI:
  Version:                      2.5.4
  Color support:                true

Platform:
  CPU Architecture:             aarch64
  OS:                           macos

Environment:
  BIOME_DISTRIBUTION:                npm
  BIOME_LOG_PATH:                    unset
  BIOME_LOG_PREFIX_NAME:             unset
  BIOME_LOG_LEVEL:                   unset
  BIOME_LOG_KIND:                    unset
  BIOME_CONFIG_PATH:                 unset
  BIOME_THREADS:                     unset
  BIOME_WATCHER_KIND:                unset
  BIOME_WATCHER_POLLING_INTERVAL:    unset
  NO_COLOR:                     unset
  TERM:                         xterm-256color
  JS_RUNTIME_VERSION:           v26.2.0
  JS_RUNTIME_NAME:              node
  NODE_PACKAGE_MANAGER:         unset

Biome Configuration:
  Status:                       Loaded successfully.
  Path:                         biome.json
  Formatter enabled:            false
  Linter enabled:               true
  Assist enabled:               true
  VCS enabled:                  true
  HTML full support enabled:    unset

Linter:
  JavaScript enabled:           unset
  JSON enabled:                 unset
  CSS enabled:                  unset
  GraphQL enabled:              unset
  Recommended:                  unset
  Enabled rules:
    a11y/noAccessKey
    a11y/noAmbiguousAnchorText
    a11y/noAriaHiddenOnFocusable
    a11y/noAriaUnsupportedElements
    a11y/noAutofocus
    a11y/noDistractingElements
    a11y/noHeaderScope
    a11y/noInteractiveElementToNoninteractiveRole
    a11y/noLabelWithoutControl
    a11y/noNoninteractiveElementInteractions
    a11y/noNoninteractiveElementToInteractiveRole
    a11y/noNoninteractiveTabindex
    a11y/noPositiveTabindex
    a11y/noRedundantAlt
    a11y/noRedundantRoles
    a11y/noStaticElementInteractions
    a11y/noSvgWithoutTitle
    a11y/useAltText
    a11y/useAnchorContent
    a11y/useAriaActivedescendantWithTabindex
    a11y/useAriaPropsForRole
    a11y/useAriaPropsSupportedByRole
    a11y/useButtonType
    a11y/useFocusableInteractive
    a11y/useGenericFontNames
    a11y/useHeadingContent
    a11y/useHtmlLang
    a11y/useIframeTitle
    a11y/useKeyWithClickEvents
    a11y/useKeyWithMouseEvents
    a11y/useMediaCaption
    a11y/useSemanticElements
    a11y/useValidAnchor
    a11y/useValidAriaProps
    a11y/useValidAriaRole
    a11y/useValidAriaValues
    a11y/useValidAutocomplete
    a11y/useValidLang
    complexity/noAdjacentSpacesInRegex
    complexity/noArguments
    complexity/noBannedTypes
    complexity/noCommaOperator
    complexity/noDivRegex
    complexity/noEmptyTypeParameters
    complexity/noExcessiveCognitiveComplexity
    complexity/noExcessiveNestedTestSuites
    complexity/noExtraBooleanCast
    complexity/noFlatMapIdentity
    complexity/noForEach
    complexity/noImplicitCoercions
    complexity/noImportantStyles
    complexity/noRedundantDefaultExport
    complexity/noThisInStatic
    complexity/noUselessCatch
    complexity/noUselessCatchBinding
    complexity/noUselessConstructor
    complexity/noUselessContinue
    complexity/noUselessEmptyExport
    complexity/noUselessEscapeInRegex
    complexity/noUselessFragments
    complexity/noUselessLabel
    complexity/noUselessLoneBlockStatements
    complexity/noUselessRename
    complexity/noUselessReturn
    complexity/noUselessStringConcat
    complexity/noUselessStringRaw
    complexity/noUselessSwitchCase
    complexity/noUselessTernary
    complexity/noUselessThisAlias
    complexity/noUselessTypeConstraint
    complexity/noUselessUndefinedInitialization
    complexity/noVoid
    complexity/useArrayFind
    complexity/useArrowFunction
    complexity/useDateNow
    complexity/useFlatMap
    complexity/useIndexOf
    complexity/useNumericLiterals
    complexity/useOptionalChain
    complexity/useRegexLiterals
    complexity/useSimpleNumberKeys
    complexity/useSimplifiedLogicExpression
    complexity/useWhile
    correctness/noBeforeInteractiveScriptOutsideDocument
    correctness/noChildrenProp
    correctness/noConstAssign
    correctness/noConstantCondition
    correctness/noConstantMathMinMaxClamp
    correctness/noConstructorReturn
    correctness/noDuplicateArgumentNames
    correctness/noDuplicateAttributes
    correctness/noDuplicateEnumValueNames
    correctness/noDuplicateInputFieldNames
    correctness/noDuplicateVariableNames
    correctness/noEmptyCharacterClassInRegex
    correctness/noEmptyPattern
    correctness/noGlobalDirnameFilename
    correctness/noGlobalObjectCalls
    correctness/noInnerDeclarations
    correctness/noInvalidBuiltinInstantiation
    correctness/noInvalidConstructorSuper
    correctness/noInvalidDirectionInLinearGradient
    correctness/noInvalidGridAreas
    correctness/noInvalidPositionAtImportRule
    correctness/noInvalidUseBeforeDeclaration
    correctness/noMissingVarFunction
    correctness/noNestedComponentDefinitions
    correctness/noNextAsyncClientComponent
    correctness/noNonoctalDecimalEscape
    correctness/noPrecisionLoss
    correctness/noPrivateImports
    correctness/noProcessGlobal
    correctness/noReactPropAssignments
    correctness/noRenderReturnValue
    correctness/noRestrictedElements
    correctness/noSelfAssign
    correctness/noSetterReturn
    correctness/noSolidDestructuredProps
    correctness/noStringCaseMismatch
    correctness/noSwitchDeclarations
    correctness/noUndeclaredDependencies
    correctness/noUndeclaredVariables
    correctness/noUnknownFunction
    correctness/noUnknownMediaFeatureName
    correctness/noUnknownProperty
    correctness/noUnknownPseudoClass
    correctness/noUnknownPseudoElement
    correctness/noUnknownTypeSelector
    correctness/noUnknownUnit
    correctness/noUnmatchableAnbSelector
    correctness/noUnreachable
    correctness/noUnreachableSuper
    correctness/noUnresolvedImports
    correctness/noUnsafeFinally
    correctness/noUnsafeOptionalChaining
    correctness/noUnusedFunctionParameters
    correctness/noUnusedImports
    correctness/noUnusedInstantiation
    correctness/noUnusedLabels
    correctness/noUnusedPrivateClassMembers
    correctness/noUnusedVariables
    correctness/noVoidElementsWithChildren
    correctness/noVoidTypeReturn
    correctness/noVueDataObjectDeclaration
    correctness/noVueDuplicateKeys
    correctness/noVueReservedKeys
    correctness/noVueReservedProps
    correctness/noVueSetupPropsReactivityLoss
    correctness/noVueVIfWithVFor
    correctness/useExhaustiveDependencies
    correctness/useGraphqlNamedOperations
    correctness/useHookAtTopLevel
    correctness/useImportExtensions
    correctness/useInlineScriptId
    correctness/useIsNan
    correctness/useJsonImportAttributes
    correctness/useLoneAnonymousOperation
    correctness/useParseIntRadix
    correctness/useSingleJsDocAsterisk
    correctness/useUniqueElementIds
    correctness/useValidForDirection
    correctness/useValidTypeof
    correctness/useVueVForKey
    correctness/useVueValidTemplateRoot
    correctness/useVueValidVBind
    correctness/useVueValidVCloak
    correctness/useVueValidVElse
    correctness/useVueValidVElseIf
    correctness/useVueValidVHtml
    correctness/useVueValidVIf
    correctness/useVueValidVOn
    correctness/useVueValidVOnce
    correctness/useVueValidVPre
    correctness/useVueValidVText
    correctness/useYield
    nursery/noBaseToString
    nursery/noComponentHookFactories
    nursery/noConditionalExpect
    nursery/noDrizzleDeleteWithoutWhere
    nursery/noDrizzleUpdateWithoutWhere
    nursery/noDuplicateFieldDefinitionNames
    nursery/noDuplicateSelectors
    nursery/noEmptyObjectKeys
    nursery/noExcessiveNestedCallbacks
    nursery/noExcessiveSelectorClasses
    nursery/noFloatingPromises
    nursery/noIdenticalTestTitle
    nursery/noImpliedEval
    nursery/noInlineStyles
    nursery/noJsxLeakedDollar
    nursery/noJsxNamespace
    nursery/noLoopFunc
    nursery/noMisleadingReturnType
    nursery/noMisusedPromises
    nursery/noPlaywrightElementHandle
    nursery/noPlaywrightEval
    nursery/noRestrictedDependencies
    nursery/noTopLevelLiterals
    nursery/noUndeclaredClasses
    nursery/noUnnecessaryTemplateExpression
    nursery/noUnsafePlusOperands
    nursery/noUntrustedLicenses
    nursery/noUnusedClasses
    nursery/noUselessTypeConversion
    nursery/useArraySome
    nursery/useAwaitThenable
    nursery/useBaseline
    nursery/useConsistentTestIt
    nursery/useDisposables
    nursery/useDomNodeTextContent
    nursery/useExhaustiveSwitchCases
    nursery/useExpect
    nursery/useExplicitReturnType
    nursery/useExplicitType
    nursery/useIframeSandbox
    nursery/useImportsFirst
    nursery/useIncludes
    nursery/useMathMinMax
    nursery/useNamedCaptureGroup
    nursery/useNullishCoalescing
    nursery/useReduceTypeParameter
    nursery/useRegexpExec
    nursery/useRegexpTest
    nursery/useScopedStyles
    nursery/useSortedClasses
    nursery/useStringStartsEndsWith
    nursery/useTestHooksInOrder
    nursery/useTestHooksOnTop
    nursery/useThisInClassMethods
    nursery/useUnicodeRegex
    nursery/useVarsOnTop
    performance/noAccumulatingSpread
    performance/noAwaitInLoops
    performance/noBarrelFile
    performance/noDelete
    performance/noDynamicNamespaceImportAccess
    performance/noNamespaceImport
    performance/noReExportAll
    performance/noSyncScripts
    performance/useTopLevelRegex
    security/noBlankTarget
    security/noGlobalEval
    security/noScriptUrl
    security/noSecrets
    style/noCommonJs
    style/noDefaultExport
    style/noDescendingSpecificity
    style/noDoneCallback
    style/noEnum
    style/noExcessiveLinesPerFile
    style/noExportedImports
    style/noHeadElement
    style/noHexColors
    style/noImplicitBoolean
    style/noIncrementDecrement
    style/noInferrableTypes
    style/noJsxLiterals
    style/noMultiAssign
    style/noMultilineString
    style/noNamespace
    style/noNegationElse
    style/noNestedTernary
    style/noNonNullAssertion
    style/noParameterAssign
    style/noParameterProperties
    style/noProcessEnv
    style/noRestrictedGlobals
    style/noRestrictedImports
    style/noRestrictedTypes
    style/noRootType
    style/noShoutyConstants
    style/noSubstr
    style/noUnusedTemplateLiteral
    style/noUselessElse
    style/noValueAtRule
    style/noVueOptionsApi
    style/noYodaExpression
    style/useArrayLiterals
    style/useAsConstAssertion
    style/useAtIndex
    style/useBlockStatements
    style/useCollapsedElseIf
    style/useCollapsedIf
    style/useComponentExportOnlyModules
    style/useConsistentArrayType
    style/useConsistentArrowReturn
    style/useConsistentBuiltinInstantiation
    style/useConsistentCurlyBraces
    style/useConsistentEnumValueType
    style/useConsistentGraphqlDescriptions
    style/useConsistentMemberAccessibility
    style/useConsistentMethodSignatures
    style/useConsistentObjectDefinitions
    style/useConsistentTypeDefinitions
    style/useConst
    style/useDefaultParameterLast
    style/useDefaultSwitchClause
    style/useDeprecatedReason
    style/useDestructuring
    style/useEnumInitializers
    style/useErrorCause
    style/useExplicitLengthCheck
    style/useExportType
    style/useExportsLast
    style/useFilenamingConvention
    style/useForOf
    style/useFragmentSyntax
    style/useGlobalThis
    style/useGraphqlNamingConvention
    style/useGroupedAccessorPairs
    style/useImportType
    style/useInputName
    style/useLiteralEnumMembers
    style/useLoneExecutableDefinition
    style/useNodeAssertStrict
    style/useNodejsImportProtocol
    style/useNumberNamespace
    style/useNumericSeparators
    style/useObjectSpread
    style/useReactFunctionComponents
    style/useReadonlyClassProperties
    style/useSelfClosingElements
    style/useShorthandAssign
    style/useShorthandFunctionType
    style/useSingleVarDeclarator
    style/useSpreadOverApply
    style/useSymbolDescription
    style/useTemplate
    style/useThrowNewError
    style/useThrowOnlyError
    style/useTrimStartEnd
    style/useUnifiedTypeSignatures
    style/useVueConsistentVBindStyle
    style/useVueConsistentVOnStyle
    style/useVueDefineMacrosOrder
    style/useVueHyphenatedAttributes
    style/useVueMultiWordComponentNames
    suspicious/noAlert
    suspicious/noApproximativeNumericConstant
    suspicious/noArrayIndexKey
    suspicious/noAssignInExpressions
    suspicious/noAsyncPromiseExecutor
    suspicious/noBiomeFirstException
    suspicious/noCatchAssign
    suspicious/noClassAssign
    suspicious/noCommentText
    suspicious/noCompareNegZero
    suspicious/noConfusingLabels
    suspicious/noConfusingVoidType
    suspicious/noConstEnum
    suspicious/noConstantBinaryExpressions
    suspicious/noControlCharactersInRegex
    suspicious/noDebugger
    suspicious/noDeprecatedImports
    suspicious/noDeprecatedMediaType
    suspicious/noDocumentCookie
    suspicious/noDocumentImportInPage
    suspicious/noDoubleEquals
    suspicious/noDuplicateAtImportRules
    suspicious/noDuplicateCase
    suspicious/noDuplicateClassMembers
    suspicious/noDuplicateCustomProperties
    suspicious/noDuplicateDependencies
    suspicious/noDuplicateElseIf
    suspicious/noDuplicateEnumValues
    suspicious/noDuplicateFields
    suspicious/noDuplicateFontNames
    suspicious/noDuplicateGraphqlOperationName
    suspicious/noDuplicateJsxProps
    suspicious/noDuplicateObjectKeys
    suspicious/noDuplicateParameters
    suspicious/noDuplicateProperties
    suspicious/noDuplicateSelectorsKeyframeBlock
    suspicious/noDuplicateTestHooks
    suspicious/noDuplicatedSpreadProps
    suspicious/noEmptyBlock
    suspicious/noEmptyBlockStatements
    suspicious/noEmptyInterface
    suspicious/noEmptySource
    suspicious/noEqualsToNull
    suspicious/noEvolvingTypes
    suspicious/noExplicitAny
    suspicious/noExportsInTest
    suspicious/noExtraNonNullAssertion
    suspicious/noFallthroughSwitchClause
    suspicious/noFocusedTests
    suspicious/noForIn
    suspicious/noFunctionAssign
    suspicious/noGlobalAssign
    suspicious/noGlobalIsFinite
    suspicious/noGlobalIsNan
    suspicious/noHeadImportInDocument
    suspicious/noImplicitAnyLet
    suspicious/noImportAssign
    suspicious/noImportCycles
    suspicious/noImportantInKeyframe
    suspicious/noIrregularWhitespace
    suspicious/noLabelVar
    suspicious/noLeakedRender
    suspicious/noMisleadingCharacterClass
    suspicious/noMisleadingInstantiator
    suspicious/noMisplacedAssertion
    suspicious/noMisrefactoredShorthandAssign
    suspicious/noNestedPromises
    suspicious/noNonNullAssertedOptionalChain
    suspicious/noOctalEscape
    suspicious/noParametersOnlyUsedInRecursion
    suspicious/noProto
    suspicious/noPrototypeBuiltins
    suspicious/noQuickfixBiome
    suspicious/noReactForwardRef
    suspicious/noRedeclare
    suspicious/noRedundantUseStrict
    suspicious/noReturnAssign
    suspicious/noSelfCompare
    suspicious/noShadow
    suspicious/noShadowRestrictedNames
    suspicious/noShorthandPropertyOverrides
    suspicious/noSkippedTests
    suspicious/noSparseArray
    suspicious/noSuspiciousSemicolonInJsx
    suspicious/noTemplateCurlyInString
    suspicious/noThenProperty
    suspicious/noTsIgnore
    suspicious/noUnassignedVariables
    suspicious/noUndeclaredEnvVars
    suspicious/noUnknownAtRules
    suspicious/noUnknownAttribute
    suspicious/noUnnecessaryConditions
    suspicious/noUnsafeDeclarationMerging
    suspicious/noUnsafeNegation
    suspicious/noUnusedExpressions
    suspicious/noUselessEscapeInString
    suspicious/noUselessRegexBackrefs
    suspicious/noVar
    suspicious/noVueArrowFuncInWatch
    suspicious/noWith
    suspicious/useAdjacentOverloadSignatures
    suspicious/useArraySortCompare
    suspicious/useBiomeIgnoreFolder
    suspicious/useDefaultSwitchClauseLast
    suspicious/useDeprecatedDate
    suspicious/useErrorMessage
    suspicious/useGetterReturn
    suspicious/useGoogleFontDisplay
    suspicious/useGuardForIn
    suspicious/useIsArray
    suspicious/useIterableCallbackReturn
    suspicious/useNamespaceKeyword
    suspicious/useNumberToFixedDigitsArgument
    suspicious/useRequiredScripts
    suspicious/useStaticResponseMethods
    suspicious/useStrictMode

Workspace:
  Open Documents:               0

Rule name

lint/style/useErrorCause:

Playground link

https://biomejs.dev/playground/?lintRules=all&tab=formatter&pane=Diagnostics&code=CgBjAGwAYQBzAHMAIABNAHkARQByAHIAbwByACAAZQB4AHQAZQBuAGQAcwAgAEUAcgByAG8AcgAgAHsACgAgACAAYwBvAG4AcwB0AHIAdQBjAHQAbwByACgAbQBlAHMAcwBhAGcAZQAsACAAcABvAHMAaQB0AGkAbwBuACwAIABvAHAAdABpAG8AbgBzACkAIAB7AAoAIAAgACAAIABzAHUAcABlAHIAKABgACQAewBtAGUAcwBzAGEAZwBlAH0AIABAACAAcABvAHMAaQB0AGkAbwBuADoAIAAkAHsAcABvAHMAaQB0AGkAbwBuAH0AYAAsACAAbwBwAHQAaQBvAG4AcwApAAoACQB0AGgAaQBzAC4AbgBhAG0AZQAgAD0AIAAnAE0AeQBFAHIAcgBvAHIAJwAKACAAIAB9AAoAfQAKAAoAdAByAHkAIAB7AAoAIAAgAHQAaAByAG8AdwAgAG4AZQB3ACAARQByAHIAbwByACgAJwB0AGUAcwB0ACcAKQAKAH0ACgBjAGEAdABjAGgAKABlAHIAcgApACAAewAKACAAIAB0AGgAcgBvAHcAIABuAGUAdwAgAE0AeQBFAHIAcgBvAHIAKAAnAG0AaQBuAGUAJwAsACAANAAyACwAIAB7ACAAYwB1AGEAcwBlADoAIABlAHIAcgAgAH0AKQAKAH0A&ruleDomains.project=all

Expected result

When the type of the last (3rd in this case) parameter of a custom Error class is ErrorOptions that accepts a cause from an Error caught via a try/catch block, the captured error when set to that cause should not product a "False Positive" form the linter.

aka

  .... 
  catch(err) {
    throw new MyError('oh no!', 42, { cause: err })
  }

Code of Conduct

  • I agree to follow Biome's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    S-Needs triageStatus: this issue needs to be triaged

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions