Description
ESMeta has been upgraded to version v0.5.0, adding support for advanced type analysis. However, it still produces some false alarms, primarily due to missing assertions, among other factors.
NOTE: v0.5.0 is merged in #3487!
As we agreed, too many algorithms are listed in esmeta-ignore.json. We aim to find solutions to these alarms, discuss some more challenging cases, and organize issues/PRs to keep track. This might lead to a higher volume of PRs, so I apologize in advance if it seems spammy.
Please reply to this issue if you have a problem or question with ESMeta alarms or an upgrade;
We will keep updating this doc on which alarms remain and which can be resolved with a fix.
Resolved PR
#PR | Name |
---|---|
#2924 | Fixed return types of algorithms returning empty |
#3485 | Editorial: Add an assertion for PrivateEnvironment cannot be null |
#3499 | Editorial: Move getting the TA type inside the RMW function |
#3445 | Editorial: GlobalObject cannot be undefined in the GetGlobalObject |
#3466 | Editorial: Narrowing an assertion in SuperCall: super Arguments |
#3483 | Editorial: Add an Assertion for Built-in Function Object |
#3484 | Editorial: GetModuleNamespace cannot return empty |
#3488 | Editorial: Handle non-direct binding cases in ResolveExports |
#3494 | Editorial: use suspended-start instead of undefined in AsyncGeneratorState |
#3495 | Editorial: Allocate-and-use in MakeMatchIndicesIndexPairArray for refinement |
#3496 | Editorial: ProxyTarget is always a function object in GetFunctionRealm |
Cannot resolve now
We are actively working to resolve the issues; however, some cases are particularly challenging and require more time. To keep readers informed, we have compiled a list of errors that cannot be resolved at this moment.
Planning to resolve In Future update
We hope the alarms below will be resolved in several weeks.
Details
[ParamTypeMismatch] Call[7014] argument assignment to second parameter _byteIndex_ when Call[7014] function call from TypedArrayGetElement (step 6, 7:21-123) to GetValueFromBuffer
- expected: NonNegInt
- actual : Int
[ParamTypeMismatch] Call[7036] argument assignment to second parameter _byteIndex_ when Call[7036] function call from TypedArraySetElement (step 3.e, 9:24-136) to SetValueInBuffer
- expected: NonNegInt
- actual : Int
[ParamTypeMismatch] Call[31197] argument assignment to first parameter _O_ when Call[31197] function call from DoWait (step 20.c, 28:26-87) to CreateDataPropertyOrThrow
- expected: Record[Object]
- actual : Record[Object] | Undefined
[ParamTypeMismatch] Call[31199] argument assignment to first parameter _O_ when Call[31199] function call from DoWait (step 20.d, 29:26-93) to CreateDataPropertyOrThrow
- expected: Record[Object]
- actual : Record[Object] | Undefined
[ParamTypeMismatch] Call[31208] argument assignment to first parameter _O_ when Call[31208] function call from DoWait (step 21.c, 34:26-87) to CreateDataPropertyOrThrow
- expected: Record[Object]
- actual : Record[Object] | Undefined
[ParamTypeMismatch] Call[31210] argument assignment to first parameter _O_ when Call[31210] function call from DoWait (step 21.d, 35:26-93) to CreateDataPropertyOrThrow
- expected: Record[Object]
- actual : Record[Object] | Undefined
[ParamTypeMismatch] Call[34361] argument assignment to first parameter _generator_ when Call[34361] function call from AsyncGeneratorYield (step 9, 10:22-101) to AsyncGeneratorCompleteStep
- expected: Record[AsyncGenerator]
- actual : Record[AsyncGenerator | Generator]
[ParamTypeMismatch] Call[18152] argument assignment to first parameter _O_ when Call[18152] function call from InstallErrorCause (step 1.a, 3:33-58) to Get
- expected: Record[Object]
- actual : ESValue
Others
Unfortunately, we do not have an idea of how to resolve the errors below right now.
Details
[ReturnTypeMismatch] Block[6066] return statement in Record[ECMAScriptFunctionObject].Call (step 9, 14:12-36)
- expected: Normal[ESValue] | Throw
- actual : Break | Continue | Throw
[ReturnTypeMismatch] Block[6168] return statement in Record[ECMAScriptFunctionObject].Construct (step 11.a, 22:14-38)
- expected: Normal[Record[Object]] | Throw
- actual : Break | Continue | Throw
[ReturnTypeMismatch] Block[6977] return statement in TypedArrayLength (step 9, 10:14-74)
- expected: NonNegInt
- actual : Int
[BinaryOpTypeMismatch] Branch[28227] binary operation (<) in CompareTypedArrayElements (step 6, 10:17-26)
- left : Number | BigInt
- right : Number | BigInt
[BinaryOpTypeMismatch] Branch[28230] binary operation (<) in CompareTypedArrayElements (step 7, 11:17-26)
- left : Number | BigInt
- right : Number | BigInt
[ReturnTypeMismatch] Block[30561] return statement in GetViewByteLength (step 8, 9:14-49)
- expected: NonNegInt
- actual : Int
[BinaryOpTypeMismatch] Branch[31192] binary operation (==) in DoWait (step 20, 25:17-26)
- left : Number[Int] | BigInt
- right : Number | BigInt
[ParamTypeMismatch] Call[31601] argument assignment to first parameter _block_ when Call[31601] function call from INTRINSICS.Atomics.notify (step 7, 11:24-67) to GetWaiterList
- expected: Record[SharedDataBlock]
- actual : Record[DataBlock | SharedDataBlock] | Null
[ReturnTypeMismatch] Block[32987] return statement in AsyncFromSyncIteratorContinuation (step 3, 4:14-64)
- expected: Record[Promise]
- actual : Throw
[ReturnTypeMismatch] Block[32998] return statement in AsyncFromSyncIteratorContinuation (step 5, 6:14-65)
- expected: Record[Promise]
- actual : Throw
[ReturnTypeMismatch] Block[33009] return statement in AsyncFromSyncIteratorContinuation (step 7, 8:14-72)
- expected: Record[Promise]
- actual : Throw
[ReturnTypeMismatch] Block[15976] return statement in Record[SourceTextModuleRecord].ExecuteModule (step 9.f.i, 17:20-38)
- expected: Normal[Enum[~unused~]] | Throw
- actual : Break | Continue | Return | Throw