Skip to content

Commit a0428dd

Browse files
committed
OS#17857906 - Fix assertion in Lower.cpp helperMethod != IR::HelperOP_InitElemGetter...
1 parent 88560a1 commit a0428dd

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

lib/Backend/GlobOpt.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10977,9 +10977,10 @@ GlobOpt::ToTypeSpecIndex(IR::Instr * instr, IR::RegOpnd * indexOpnd, IR::IndirOp
1097710977
instr->m_opcode == Js::OpCode::InitClassMemberGetComputedName ||
1097810978
instr->m_opcode == Js::OpCode::InitClassMemberSetComputedName;
1097910979

10980-
if ((indexOpnd->GetValueType().IsInt()
10981-
? !IsTypeSpecPhaseOff(func)
10982-
: indexOpnd->GetValueType().IsLikelyInt() && DoAggressiveIntTypeSpec() && !isGetterOrSetter) // typespec is disabled for getters, setters
10980+
if (!isGetterOrSetter // typespec is disabled for getters, setters
10981+
&& (indexOpnd->GetValueType().IsInt()
10982+
? !IsTypeSpecPhaseOff(func)
10983+
: indexOpnd->GetValueType().IsLikelyInt() && DoAggressiveIntTypeSpec())
1098310984
&& !GetIsAsmJSFunc()) // typespec is disabled for asmjs
1098410985
{
1098510986
StackSym *const indexVarSym = indexOpnd->m_sym;

test/es6/bug_OS16649604.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var tests = [
1919
set [m](val) { }
2020
get [r]() { return 'a'; }
2121
set [s](val) { }
22+
get [1 & Math]() { return 42; }
2223
}
2324

2425
d = {
@@ -36,6 +37,7 @@ var tests = [
3637
assert.areEqual('undefined', typeof ((new c())[2]), "Integer as class member setter property name");
3738
assert.areEqual('string', typeof ((new c())[0.5]), "Float as class member getter property name");
3839
assert.areEqual('undefined', typeof ((new c())['prop']), "String as class member setter property name");
40+
assert.areEqual('number', typeof ((new c())[1 & Math]), "Expression as class member setter property name");
3941

4042
assert.areEqual('number', typeof (d[1]), "Integer as getter property name");
4143
assert.areEqual('undefined', typeof (d[2]), "Integer as setter property name");

0 commit comments

Comments
 (0)