• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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