1/* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16import { 17 expect 18} from 'chai'; 19import 'mocha'; 20import { 21 EcmaReturnundefined, 22 EcmaStglobalvar, 23 EcmaTryldglobalbyname, 24 Imm, 25 LdaDyn, 26 MovDyn, 27 StaDyn, 28 EcmaDefineclasswithbuffer, 29 EcmaStclasstoglobalrecord, 30 EcmaNewobjdynrange, 31 VReg 32} from "../../src/irnodes"; 33import { checkInstructions, SnippetCompiler } from "../utils/base"; 34 35describe("CommaListExpression", function () { 36 it("computedPropertyName", function () { 37 let snippetCompiler = new SnippetCompiler(); 38 snippetCompiler.compileAfter(" \ 39 class Test { \ 40 #filed1; \ 41 #filed2; \ 42 #filed3; \ 43 #filed4; \ 44 #filed5; \ 45 #filed6; \ 46 #filed7; \ 47 #filed8; \ 48 #filed9; \ 49 #filed10; \ 50 #filed11; \ 51 } \ 52 ", 53 "test.ts"); 54 let insns = snippetCompiler.getGlobalInsns(); 55 let expected = [ 56 new MovDyn(new VReg(), new VReg()), 57 new EcmaDefineclasswithbuffer("#1#Test", new Imm(0), new Imm(0), new VReg(), new VReg()), 58 new StaDyn(new VReg()), 59 new LdaDyn(new VReg()), 60 new EcmaStclasstoglobalrecord("Test"), 61 new EcmaTryldglobalbyname('WeakMap'), 62 new StaDyn(new VReg()), 63 new MovDyn(new VReg(), new VReg()), 64 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 65 new EcmaStglobalvar('_Test_filed1'), 66 new EcmaTryldglobalbyname('WeakMap'), 67 new StaDyn(new VReg()), 68 new MovDyn(new VReg(), new VReg()), 69 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 70 new EcmaStglobalvar('_Test_filed2'), 71 new EcmaTryldglobalbyname('WeakMap'), 72 new StaDyn(new VReg()), 73 new MovDyn(new VReg(), new VReg()), 74 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 75 new EcmaStglobalvar('_Test_filed3'), 76 new EcmaTryldglobalbyname('WeakMap'), 77 new StaDyn(new VReg()), 78 new MovDyn(new VReg(), new VReg()), 79 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 80 new EcmaStglobalvar('_Test_filed4'), 81 new EcmaTryldglobalbyname('WeakMap'), 82 new StaDyn(new VReg()), 83 new MovDyn(new VReg(), new VReg()), 84 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 85 new EcmaStglobalvar('_Test_filed5'), 86 new EcmaTryldglobalbyname('WeakMap'), 87 new StaDyn(new VReg()), 88 new MovDyn(new VReg(), new VReg()), 89 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 90 new EcmaStglobalvar('_Test_filed6'), 91 new EcmaTryldglobalbyname('WeakMap'), 92 new StaDyn(new VReg()), 93 new MovDyn(new VReg(), new VReg()), 94 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 95 new EcmaStglobalvar('_Test_filed7'), 96 new EcmaTryldglobalbyname('WeakMap'), 97 new StaDyn(new VReg()), 98 new MovDyn(new VReg(), new VReg()), 99 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 100 new EcmaStglobalvar('_Test_filed8'), 101 new EcmaTryldglobalbyname('WeakMap'), 102 new StaDyn(new VReg()), 103 new MovDyn(new VReg(), new VReg()), 104 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 105 new EcmaStglobalvar('_Test_filed9'), 106 new EcmaTryldglobalbyname('WeakMap'), 107 new StaDyn(new VReg()), 108 new MovDyn(new VReg(), new VReg()), 109 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 110 new EcmaStglobalvar('_Test_filed10'), 111 new EcmaTryldglobalbyname('WeakMap'), 112 new StaDyn(new VReg()), 113 new MovDyn(new VReg(), new VReg()), 114 new EcmaNewobjdynrange(new Imm(2), [new VReg(), new VReg()]), 115 new EcmaStglobalvar('_Test_filed11'), 116 new EcmaReturnundefined() 117 ] 118 expect(checkInstructions(insns, expected)).to.be.true; 119 }); 120 121}); 122