diff --git a/src/completions.js b/src/completions.js index 82fac99da..a5bab9391 100644 --- a/src/completions.js +++ b/src/completions.js @@ -85,11 +85,6 @@ export class ReturnCompletion extends AbruptCompletion { } } -// An erased abrupt completion arises when an abrupt completion reaches a join point. -// Ideally we should use a SimpleNormalCompletion in its place, but that can only -// happen after ForkedAbruptCompletion and PossiblyNormalCompletion are unified. -export class ErasedAbruptCompletion extends AbruptCompletion {} - export class ForkedAbruptCompletion extends AbruptCompletion { constructor( realm: Realm, diff --git a/src/evaluators/TryStatement.js b/src/evaluators/TryStatement.js index 4e1406371..0f0127192 100644 --- a/src/evaluators/TryStatement.js +++ b/src/evaluators/TryStatement.js @@ -13,7 +13,6 @@ import type { Effects, Realm } from "../realm.js"; import { type LexicalEnvironment } from "../environment.js"; import { AbruptCompletion, - ErasedAbruptCompletion, ForkedAbruptCompletion, PossiblyNormalCompletion, ThrowCompletion, @@ -113,7 +112,6 @@ export default function(ast: BabelNodeTryStatement, strictCode: boolean, env: Le }, "composeNestedThrowEffectsWithHandler/1" ); - c.updateConsequentKeepingCurrentEffects(new ErasedAbruptCompletion(realm.intrinsics.empty)); } priorEffects.pop(); let alternate = c.alternate; @@ -130,7 +128,6 @@ export default function(ast: BabelNodeTryStatement, strictCode: boolean, env: Le }, "composeNestedThrowEffectsWithHandler/2" ); - c.updateAlternateKeepingCurrentEffects(new ErasedAbruptCompletion(realm.intrinsics.empty)); } priorEffects.pop(); return Join.joinForkOrChoose(realm, c.joinCondition, consequentEffects, alternateEffects); diff --git a/src/realm.js b/src/realm.js index ad15abb9a..122f41da0 100644 --- a/src/realm.js +++ b/src/realm.js @@ -55,7 +55,6 @@ import { cloneDescriptor, Construct } from "./methods/index.js"; import { AbruptCompletion, Completion, - ErasedAbruptCompletion, ForkedAbruptCompletion, PossiblyNormalCompletion, SimpleNormalCompletion, @@ -1312,14 +1311,14 @@ export class Realm { function allPathsAreAbrupt(c: Completion): boolean { if (c instanceof ForkedAbruptCompletion) return allPathsAreAbrupt(c.consequent) && allPathsAreAbrupt(c.alternate); - if (c instanceof AbruptCompletion) return !(c instanceof ErasedAbruptCompletion); + if (c instanceof AbruptCompletion) return true; return false; } function allPathsAreNormal(c: Completion): boolean { if (c instanceof PossiblyNormalCompletion || c instanceof ForkedAbruptCompletion) return allPathsAreNormal(c.consequent) && allPathsAreNormal(c.alternate); - if (c instanceof AbruptCompletion) return c instanceof ErasedAbruptCompletion; + if (c instanceof AbruptCompletion) return false; return true; } diff --git a/test/serializer/abstract/ConditionalAbstractObjectValueSet.js b/test/serializer/abstract/ConditionalAbstractObjectValueSet.js index de1b3eef0..ad1a7d6d2 100644 --- a/test/serializer/abstract/ConditionalAbstractObjectValueSet.js +++ b/test/serializer/abstract/ConditionalAbstractObjectValueSet.js @@ -1,13 +1,15 @@ // does not contain:unnecessaryIndirection -(function () { +(function() { let c1 = global.__abstract ? __abstract("boolean", "(true)") : true; let c2 = global.__abstract ? __abstract("boolean", "(!false)") : true; - var a = {unnecessaryIndirection:1}; - var b = {unnecessaryIndirection:2}; - var c = {unnecessaryIndirection:3}; + var a = { unnecessaryIndirection: 1 }; + var b = { unnecessaryIndirection: 2 }; + var c = { unnecessaryIndirection: 3 }; var obj1 = c1 ? a : b; var obj2 = c2 ? obj1 : c; obj2.unnecessaryIndirection = 5; global.result = a.unnecessaryIndirection; - inspect = function() { return global.result; }; + inspect = function() { + return global.result; + }; })(); diff --git a/test/serializer/abstract/ConditionalAbstractObjectValueSetNewProperty.js b/test/serializer/abstract/ConditionalAbstractObjectValueSetNewProperty.js index 2c8b5a9ab..db8cdd07d 100644 --- a/test/serializer/abstract/ConditionalAbstractObjectValueSetNewProperty.js +++ b/test/serializer/abstract/ConditionalAbstractObjectValueSetNewProperty.js @@ -1,15 +1,12 @@ -(function () { +(function() { let c = global.__abstract ? __abstract("boolean", "(true)") : true; - var a = {x:1}; + var a = { x: 1 }; var b = {}; var obj = c ? a : b; obj.x = 2; global.result = a.x; global.residualObject = b; inspect = function() { - return ( - global.result + ' ' + - global.residualObject.x + ' ' + - global.residualObject.hasOwnProperty('x') - ); }; + return global.result + " " + global.residualObject.x + " " + global.residualObject.hasOwnProperty("x"); + }; })();