• 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 { CmdOptions } from '../../src/cmdOptions';
21import {
22    Returnundefined,
23    Stglobalvar,
24    Tryldglobalbyname,
25    Imm,
26    Lda,
27    Mov,
28    Sta,
29    Defineclasswithbuffer,
30    Sttoglobalrecord,
31    Newobjrange,
32    VReg,
33    IRNode
34} from "../../src/irnodes";
35import { checkInstructions, SnippetCompiler } from "../utils/base";
36import { creatAstFromSnippet } from "../utils/asthelper"
37import { PandaGen } from '../../src/pandagen';
38
39describe("CommaListExpression", function () {
40    it("computedPropertyName", function () {
41        CmdOptions.parseUserCmd([""]);
42        let snippetCompiler = new SnippetCompiler();
43        snippetCompiler.compileAfter(" \
44        class Test { \
45            #filed1; \
46            #filed2; \
47            #filed3; \
48            #filed4; \
49            #filed5; \
50            #filed6; \
51            #filed7; \
52            #filed8; \
53            #filed9; \
54            #filed10; \
55            #filed11; \
56        } \
57        ",
58        "test.ts");
59        IRNode.pg = new PandaGen("foo", creatAstFromSnippet(" \
60        class Test { \
61            #filed1; \
62            #filed2; \
63            #filed3; \
64            #filed4; \
65            #filed5; \
66            #filed6; \
67            #filed7; \
68            #filed8; \
69            #filed9; \
70            #filed10; \
71            #filed11; \
72        } \
73        "), 0, undefined);
74        let insns = snippetCompiler.getGlobalInsns();
75        let expected = [
76            new Mov(new VReg(), new VReg()),
77            new Defineclasswithbuffer(new Imm(0), "UnitTest.#1#Test", "test_1", new Imm(0), new VReg()),
78            new Sta(new VReg()),
79            new Lda(new VReg()),
80            new Sttoglobalrecord(new Imm(1), "Test"),
81            new Tryldglobalbyname(new Imm(2), 'WeakMap'),
82            new Sta(new VReg()),
83            new Newobjrange(new Imm(3), new Imm(1), [new VReg()]),
84            new Stglobalvar(new Imm(5), '_filed1#a'),
85            new Tryldglobalbyname(new Imm(6), 'WeakMap'),
86            new Sta(new VReg()),
87            new Newobjrange(new Imm(7), new Imm(1), [new VReg()]),
88            new Stglobalvar(new Imm(9), '_filed2#b'),
89            new Tryldglobalbyname(new Imm(10), 'WeakMap'),
90            new Sta(new VReg()),
91            new Newobjrange(new Imm(11), new Imm(1), [new VReg()]),
92            new Stglobalvar(new Imm(13), '_filed3#c'),
93            new Tryldglobalbyname(new Imm(14), 'WeakMap'),
94            new Sta(new VReg()),
95            new Newobjrange(new Imm(15), new Imm(1), [new VReg()]),
96            new Stglobalvar(new Imm(17), '_filed4#d'),
97            new Tryldglobalbyname(new Imm(18), 'WeakMap'),
98            new Sta(new VReg()),
99            new Newobjrange(new Imm(19), new Imm(1), [new VReg()]),
100            new Stglobalvar(new Imm(21), '_filed5#e'),
101            new Tryldglobalbyname(new Imm(22), 'WeakMap'),
102            new Sta(new VReg()),
103            new Newobjrange(new Imm(23), new Imm(1), [new VReg()]),
104            new Stglobalvar(new Imm(25), '_filed6#f'),
105            new Tryldglobalbyname(new Imm(26), 'WeakMap'),
106            new Sta(new VReg()),
107            new Newobjrange(new Imm(27), new Imm(1), [new VReg()]),
108            new Stglobalvar(new Imm(29), '_filed7#g'),
109            new Tryldglobalbyname(new Imm(30), 'WeakMap'),
110            new Sta(new VReg()),
111            new Newobjrange(new Imm(31), new Imm(1), [new VReg()]),
112            new Stglobalvar(new Imm(33), '_filed8#h'),
113            new Tryldglobalbyname(new Imm(34), 'WeakMap'),
114            new Sta(new VReg()),
115            new Newobjrange(new Imm(35), new Imm(1), [new VReg()]),
116            new Stglobalvar(new Imm(37), '_filed9#i'),
117            new Tryldglobalbyname(new Imm(38), 'WeakMap'),
118            new Sta(new VReg()),
119            new Newobjrange(new Imm(39), new Imm(1), [new VReg()]),
120            new Stglobalvar(new Imm(41), '_filed10#j'),
121            new Tryldglobalbyname(new Imm(42), 'WeakMap'),
122            new Sta(new VReg()),
123            new Newobjrange(new Imm(43), new Imm(1), [new VReg()]),
124            new Stglobalvar(new Imm(45), '_filed11#k'),
125            new Returnundefined()
126        ]
127        expect(checkInstructions(insns, expected)).to.be.true;
128    });
129
130});
131