es-meta / esmeta

ECMAScript Specification (ECMA-262) Metalanguage
BSD 3-Clause "New" or "Revised" License
188 stars 12 forks source link

NoSuchElementException: key not found: IntegerIndexedExoticObject.GetOwnProperty #197

Closed michaelficarra closed 10 months ago

michaelficarra commented 11 months ago

In https://github.com/tc39/ecma262/pull/3194, we are renaming "Integer-Indexed exotic object" to "TypedArray". When running esmeta type checking in our CI, we get the following error:

Error: Exception in thread "main" java.util.NoSuchElementException: key not found: IntegerIndexedExoticObject.GetOwnProperty
Error: Exception in thread "main" java.util.NoSuchElementException: key not found: IntegerIndexedExoticObject.GetOwnProperty
    at scala.collection.immutable.BitmapIndexedMapNode.apply(HashMap.scala:635)
    at scala.collection.immutable.BitmapIndexedMapNode.apply(HashMap.scala:633)
    at scala.collection.immutable.BitmapIndexedMapNode.apply(HashMap.scala:633)
    at scala.collection.immutable.HashMap.apply(HashMap.scala:132)
    at esmeta.analyzer.domain.value.TypeDomain$.clo$$anonfun$1(TypeDomain.scala:356)
    at scala.collection.immutable.List.map(List.scala:250)
    at esmeta.analyzer.domain.value.TypeDomain$.clo(TypeDomain.scala:356)
    at esmeta.analyzer.domain.value.TypeDomain$.clo(TypeDomain.scala:351)
    at esmeta.analyzer.AbsTransfer.transfer$$anonfun$13$$anonfun$1$$anonfun$2$$anonfun$2$$anonfun$1(AbsTransfer.scala:266)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$map$$anonfun$1(StateMonad.scala:9)
    at esmeta.util.StateMonad$$anon$1.apply(StateMonad.scala:7)
    at esmeta.util.StateMonad$$anon$1.apply(StateMonad.scala:7)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$flatMap$$anonfun$1(StateMonad.scala:15)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$flatMap$$anonfun$1(StateMonad.scala:15)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$flatMap$$anonfun$1(StateMonad.scala:15)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$flatMap$$anonfun$1(StateMonad.scala:15)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$Result.esmeta$util$StateMonad$Result$$_$flatMap$$anonfun$1(StateMonad.scala:14)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.util.StateMonad$$anon$2.apply(StateMonad.scala:13)
    at esmeta.analyzer.AbsTransfer.apply(AbsTransfer.scala:49)
    at esmeta.analyzer.AbsTransfer.apply(AbsTransfer.scala:25)
    at esmeta.analyzer.AbsSemantics.fixpoint(AbsSemantics.scala:84)
    at esmeta.analyzer.TypeAnalyzer.result$$anonfun$1$$anonfun$1(TypeAnalyzer.scala:24)
    at esmeta.analyzer.package$package$.withSem(package.scala:59)
    at esmeta.analyzer.TypeAnalyzer.result$$anonfun$1(TypeAnalyzer.scala:64)
    at esmeta.analyzer.package$package$.withCFG(package.scala:50)
    at esmeta.analyzer.TypeAnalyzer.result(TypeAnalyzer.scala:65)
    at esmeta.analyzer.TypeAnalyzer$.apply(TypeAnalyzer.scala:149)
    at esmeta.phase.TypeCheck$.apply(TypeCheck.scala:25)
    at esmeta.phase.TypeCheck$.apply(TypeCheck.scala:16)
    at esmeta.phase.Phase.getRunner$$anonfun$1(Phase.scala:48)
    at esmeta.phase.PhaseCons.getRunner$$anonfun$2(PhaseList.scala:53)
    at esmeta.ESMeta$.apply(ESMeta.scala:45)
    at esmeta.Command.apply(Command.scala:41)
    at esmeta.ESMeta$.main(ESMeta.scala:17)
    at esmeta.ESMeta.main(ESMeta.scala)

I think there may have been some special handling of IIEOs and hopefully the fix will be a simple name change on your side to match our new name.

michaelficarra commented 11 months ago

Ping @jhnaldo. We'd like to merge https://github.com/tc39/ecma262/pull/3194, but it's currently blocked on this change. If we don't hear back soon, we'll have to disable esmeta checks in our CI until esmeta is updated.

jhnaldo commented 11 months ago

Hi @michaelficarra. I'm sorry for the inconvenience. I will fix the error you mentioned this week and ping you after doing it.

jhnaldo commented 10 months ago

Dear @michaelficarra. I fixed bug this issue in this commit https://github.com/es-meta/esmeta/commit/1401b396a4a37455712010cf61595e1aaccfc009 and applied it in the new release version ESMeta v0.3.3. I will create a PR for this new update.