diff --git a/test/spec/wcc/llw/llw.spec.ts b/test/spec/wcc/llw/llw.spec.ts new file mode 100644 index 0000000..dd9be64 --- /dev/null +++ b/test/spec/wcc/llw/llw.spec.ts @@ -0,0 +1,398 @@ + +import assert from 'assert'; +import path from 'path'; +import node from '../../../runner/node' +import wine from '../../../runner/wine' +import * as fs from 'fs' + +describe("wcc - llw", function () { + describe("llw: node output should deep equal with wine", function () { + // afterEach(function(){ + // if(this.currentTest.state === 'failed'){ + // console.error('failed', this.currentTest) + // } + // }) + it("初次加载1 # 变量名不同,需要手动检测", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<4896", + "-cc", + "12>_<4896./component/navigation-bar/navigation-bar.wxml>_<48961>_<4896mp-navigation-bar>_<4896./components/navigation-bar/index.wxml>_<48961>_<4896mp-navigation-bar>_<4896./components/page-scroll/index.wxml>_<48961>_<4896mp-navigation-bar>_<4896./miniprogram_npm/miniprogram-barrage/index.wxml>_<48960>_<4896./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<48960>_<4896./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<48960>_<4896./miniprogram_npm/wxml-to-canvas/index.wxml>_<48960>_<4896./page/API/index.wxml>_<48962>_<4896set-tab-bar>_<4896mp-navigation-bar>_<4896./page/API/components/set-tab-bar/set-tab-bar.wxml>_<48961>_<4896mp-navigation-bar>_<4896./page/cloud/index.wxml>_<48961>_<4896mp-navigation-bar>_<4896./page/component/index.wxml>_<48961>_<4896mp-navigation-bar>_<4896./page/extend/index.wxml>_<48961>_<4896mp-navigation-bar", + "-llw", + "./component/navigation-bar/navigation-bar>_<4896./components/navigation-bar/index>_<4896./components/page-scroll/index>_<4896./miniprogram_npm/miniprogram-barrage/index>_<4896./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<4896./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<4896./miniprogram_npm/wxml-to-canvas/index>_<4896./page/API/index>_<4896./page/API/components/set-tab-bar/set-tab-bar>_<4896./page/cloud/index>_<4896./page/component/index>_<4896./page/extend/index", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("组件 - 视图容器", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<749", + "-cc", + "37>_<749./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/canvas/webgl/webgl.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/content/icon/icon.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/content/progress/progress.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/content/rich-text/rich-text.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/content/text/text.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/doc-web-view/doc-web-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/button/button.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/checkbox/checkbox.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/editor/editor.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/form/form.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/input/input.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/label/label.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/picker/picker.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/picker-view/picker-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/radio/radio.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/slider/slider.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/switch/switch.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/form/textarea/textarea.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/map/map/map.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/media/camera/camera.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/media/image/image.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/media/live-player/live-player.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/media/live-pusher/live-pusher.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/media/video/video.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/nav/navigator/navigate.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/nav/navigator/navigator.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/nav/navigator/redirect.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/open/ad/ad.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/open/open-data/open-data.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/open/web-view/web-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/view/cover-view/cover-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/view/movable-view/movable-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/view/scroll-view/scroll-view.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/view/swiper/swiper.wxml>_<7491>_<749mp-navigation-bar>_<749./packageComponent/pages/view/view/view.wxml>_<7491>_<749mp-navigation-bar", + "-llw", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d>_<749./packageComponent/pages/canvas/webgl/webgl>_<749./packageComponent/pages/content/icon/icon>_<749./packageComponent/pages/content/progress/progress>_<749./packageComponent/pages/content/rich-text/rich-text>_<749./packageComponent/pages/content/text/text>_<749./packageComponent/pages/doc-web-view/doc-web-view>_<749./packageComponent/pages/form/button/button>_<749./packageComponent/pages/form/checkbox/checkbox>_<749./packageComponent/pages/form/editor/editor>_<749./packageComponent/pages/form/form/form>_<749./packageComponent/pages/form/input/input>_<749./packageComponent/pages/form/label/label>_<749./packageComponent/pages/form/picker/picker>_<749./packageComponent/pages/form/picker-view/picker-view>_<749./packageComponent/pages/form/radio/radio>_<749./packageComponent/pages/form/slider/slider>_<749./packageComponent/pages/form/switch/switch>_<749./packageComponent/pages/form/textarea/textarea>_<749./packageComponent/pages/map/map/map>_<749./packageComponent/pages/media/camera/camera>_<749./packageComponent/pages/media/image/image>_<749./packageComponent/pages/media/live-player/live-player>_<749./packageComponent/pages/media/live-pusher/live-pusher>_<749./packageComponent/pages/media/video/video>_<749./packageComponent/pages/nav/navigator/navigate>_<749./packageComponent/pages/nav/navigator/navigator>_<749./packageComponent/pages/nav/navigator/redirect>_<749./packageComponent/pages/obstacle-free/aria-component/aria-component>_<749./packageComponent/pages/open/ad/ad>_<749./packageComponent/pages/open/open-data/open-data>_<749./packageComponent/pages/open/web-view/web-view>_<749./packageComponent/pages/view/cover-view/cover-view>_<749./packageComponent/pages/view/movable-view/movable-view>_<749./packageComponent/pages/view/scroll-view/scroll-view>_<749./packageComponent/pages/view/swiper/swiper>_<749./packageComponent/pages/view/view/view", + "./packageComponent/pages/canvas/canvas-2d/canvas-2d.wxml", + "./packageComponent/pages/canvas/webgl/webgl.wxml", + "./packageComponent/pages/content/icon/icon.wxml", + "./packageComponent/pages/content/progress/progress.wxml", + "./packageComponent/pages/content/rich-text/rich-text.wxml", + "./packageComponent/pages/content/text/text.wxml", + "./packageComponent/pages/doc-web-view/doc-web-view.wxml", + "./packageComponent/pages/form/button/button.wxml", + "./packageComponent/pages/form/checkbox/checkbox.wxml", + "./packageComponent/pages/form/editor/editor.wxml", + "./packageComponent/pages/form/form/form.wxml", + "./packageComponent/pages/form/input/input.wxml", + "./packageComponent/pages/form/label/label.wxml", + "./packageComponent/pages/form/picker/picker.wxml", + "./packageComponent/pages/form/picker-view/picker-view.wxml", + "./packageComponent/pages/form/radio/radio.wxml", + "./packageComponent/pages/form/slider/slider.wxml", + "./packageComponent/pages/form/switch/switch.wxml", + "./packageComponent/pages/form/textarea/textarea.wxml", + "./packageComponent/pages/map/map/map.wxml", + "./packageComponent/pages/media/camera/camera.wxml", + "./packageComponent/pages/media/image/image.wxml", + "./packageComponent/pages/media/live-player/live-player.wxml", + "./packageComponent/pages/media/live-pusher/live-pusher.wxml", + "./packageComponent/pages/media/video/video.wxml", + "./packageComponent/pages/nav/navigator/navigate.wxml", + "./packageComponent/pages/nav/navigator/navigator.wxml", + "./packageComponent/pages/nav/navigator/redirect.wxml", + "./packageComponent/pages/obstacle-free/aria-component/aria-component.wxml", + "./packageComponent/pages/open/ad/ad.wxml", + "./packageComponent/pages/open/open-data/open-data.wxml", + "./packageComponent/pages/open/web-view/web-view.wxml", + "./packageComponent/pages/view/cover-view/cover-view.wxml", + "./packageComponent/pages/view/movable-view/movable-view.wxml", + "./packageComponent/pages/view/scroll-view/scroll-view.wxml", + "./packageComponent/pages/view/swiper/swiper.wxml", + "./packageComponent/pages/view/view/view.wxml", + "-gn", + "$7061636b616765436f6d706f6e656e742f", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("组件 - skyline", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<8685", + "-cc", + "7>_<8685./packageSkyline/pages/flutter/half-page/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/flutter/scale-page/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/share-element/card/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/share-element/list/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/worklet/animation/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/worklet/bottom-sheet/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar>_<8685./packageSkyline/pages/worklet/gesture/index.wxml>_<86853>_<8685navigation-bar>_<8685page-scroll>_<8685mp-navigation-bar", + "-llw", + "./packageSkyline/pages/flutter/half-page/index>_<8685./packageSkyline/pages/flutter/scale-page/index>_<8685./packageSkyline/pages/share-element/card/index>_<8685./packageSkyline/pages/share-element/list/index>_<8685./packageSkyline/pages/worklet/animation/index>_<8685./packageSkyline/pages/worklet/bottom-sheet/index>_<8685./packageSkyline/pages/worklet/gesture/index", + "./packageSkyline/pages/flutter/half-page/index.wxml", + "./packageSkyline/pages/flutter/scale-page/index.wxml", + "./packageSkyline/pages/share-element/card/index.wxml", + "./packageSkyline/pages/share-element/list/index.wxml", + "./packageSkyline/pages/worklet/animation/index.wxml", + "./packageSkyline/pages/worklet/bottom-sheet/index.wxml", + "./packageSkyline/pages/worklet/gesture/index.wxml", + "-gn", + "$7061636b616765536b796c696e652f", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("组件 - skyline - 自定义路由 # 变量名不同,需要手动检测", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<2747", + "-cc", + "12>_<2747./component/navigation-bar/navigation-bar.wxml>_<27471>_<2747mp-navigation-bar>_<2747./components/navigation-bar/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./components/page-scroll/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./miniprogram_npm/miniprogram-barrage/index.wxml>_<27470>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<27470>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<27470>_<2747./miniprogram_npm/wxml-to-canvas/index.wxml>_<27470>_<2747./page/API/index.wxml>_<27472>_<2747set-tab-bar>_<2747mp-navigation-bar>_<2747./page/API/components/set-tab-bar/set-tab-bar.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/cloud/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/component/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/extend/index.wxml>_<27471>_<2747mp-navigation-bar", + "-llw", + "./component/navigation-bar/navigation-bar>_<2747./components/navigation-bar/index>_<2747./components/page-scroll/index>_<2747./miniprogram_npm/miniprogram-barrage/index>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<2747./miniprogram_npm/wxml-to-canvas/index>_<2747./page/API/index>_<2747./page/API/components/set-tab-bar/set-tab-bar>_<2747./page/cloud/index>_<2747./page/component/index>_<2747./page/extend/index", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("扩展能力 - 表单 - cell # 变量名不同,需要手动检测", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-d", + "--split", + ">_<2747", + "-cc", + "12>_<2747./component/navigation-bar/navigation-bar.wxml>_<27471>_<2747mp-navigation-bar>_<2747./components/navigation-bar/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./components/page-scroll/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./miniprogram_npm/miniprogram-barrage/index.wxml>_<27470>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml>_<27470>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml>_<27470>_<2747./miniprogram_npm/wxml-to-canvas/index.wxml>_<27470>_<2747./page/API/index.wxml>_<27472>_<2747set-tab-bar>_<2747mp-navigation-bar>_<2747./page/API/components/set-tab-bar/set-tab-bar.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/cloud/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/component/index.wxml>_<27471>_<2747mp-navigation-bar>_<2747./page/extend/index.wxml>_<27471>_<2747mp-navigation-bar", + "-llw", + "./component/navigation-bar/navigation-bar>_<2747./components/navigation-bar/index>_<2747./components/page-scroll/index>_<2747./miniprogram_npm/miniprogram-barrage/index>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-item>_<2747./miniprogram_npm/miniprogram-recycle-view/recycle-view>_<2747./miniprogram_npm/wxml-to-canvas/index>_<2747./page/API/index>_<2747./page/API/components/set-tab-bar/set-tab-bar>_<2747./page/cloud/index>_<2747./page/component/index>_<2747./page/extend/index", + "./common/foot.wxml", + "./common/head.wxml", + "./component/navigation-bar/navigation-bar.wxml", + "./components/navigation-bar/index.wxml", + "./components/page-scroll/index.wxml", + "./miniprogram_npm/miniprogram-barrage/index.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-item.wxml", + "./miniprogram_npm/miniprogram-recycle-view/recycle-view.wxml", + "./miniprogram_npm/wxml-to-canvas/index.wxml", + "./page/API/index.wxml", + "./page/API/components/set-tab-bar/set-tab-bar.wxml", + "./page/cloud/index.wxml", + "./page/common/foot.wxml", + "./page/common/head.wxml", + "./page/component/index.wxml", + "./page/extend/index.wxml", + "-gn", + "$gwx", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + it("接口 - 微信登录", async function () { + const projectPath = path.resolve( + __dirname, + "/mnt/d/Work/WeChatProjects/miniprogram-demo/miniprogram" + ); + const args = [ + "-ds", + "-d", + "--split", + ">_<7622", + "-cc", + "74>_<7622./packageAPI/pages/api/choose-address/choose-address.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/choose-invoice-title/choose-invoice-title.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/custom-message/custom-message.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/get-user-info/get-user-info.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/jump/jump.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/login/login.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/request-payment/request-payment.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/setting/setting.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/share/share.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/share-button/share-button.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/soter-authentication/soter-authentication.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/api/subscribe-message/subscribe-message.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/ar/2dmarker-ar/2dmarker-ar.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/ar/osd-ar/osd-ar.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/ar/plane-ar/plane-ar.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/ar/visionkit-basic/visionkit-basic.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/add-contact/add-contact.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/bluetooth/bluetooth.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/bluetooth/slave/slave.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/capture-screen/capture-screen.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/clipboard-data/clipboard-data.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/get-battery-info/get-battery-info.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/get-network-type/get-network-type.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/get-system-info/get-system-info.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/ibeacon/ibeacon.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/make-phone-call/make-phone-call.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/on-accelerometer-change/on-accelerometer-change.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/on-compass-change/on-compass-change.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/on-network-status-change/on-network-status-change.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/scan-code/scan-code.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/screen-brightness/screen-brightness.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/vibrate/vibrate.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/device/wifi/wifi.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/resizable/resizable.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/two-way-bindings/two-way-bindings.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/wxs/movable.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/wxs/nearby.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/wxs/sidebar.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/wxs/stick-top.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/framework/wxs/wxs.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/location/choose-location/choose-location.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/location/get-location/get-location.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/location/open-location/open-location.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/audio/audio.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/background-audio/background-audio.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/file/file.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/image/image.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/load-font-face/load-font-face.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/media-container/media-container.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/video/video.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/media/voice/voice.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/download-file/download-file.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/mdns/mdns.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/request/request.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/udp-socket/udp-socket.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/upload-file/upload-file.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/network/web-socket/web-socket.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/action-sheet/action-sheet.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/animation/animation.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/canvas/canvas.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/get-wxml-node-info/get-wxml-node-info.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/intersection-observer/intersection-observer.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/modal/modal.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/navigation-bar-loading/navigation-bar-loading.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/navigator/navigator.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/page-scroll/page-scroll.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/pull-down-refresh/pull-down-refresh.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/set-navigation-bar-title/set-navigation-bar-title.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/page/toast/toast.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/performance/get-performance/get-performance.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/storage/get-background-fetch-data/get-background-fetch-data.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/storage/get-background-prefetch-data/get-background-prefetch-data.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/storage/storage/storage.wxml>_<76221>_<7622mp-navigation-bar>_<7622./packageAPI/pages/worker/worker/worker.wxml>_<76221>_<7622mp-navigation-bar", + "-llw", + "./packageAPI/pages/api/choose-address/choose-address>_<7622./packageAPI/pages/api/choose-invoice-title/choose-invoice-title>_<7622./packageAPI/pages/api/custom-message/custom-message>_<7622./packageAPI/pages/api/get-user-info/get-user-info>_<7622./packageAPI/pages/api/jump/jump>_<7622./packageAPI/pages/api/login/login>_<7622./packageAPI/pages/api/request-payment/request-payment>_<7622./packageAPI/pages/api/setting/setting>_<7622./packageAPI/pages/api/share/share>_<7622./packageAPI/pages/api/share-button/share-button>_<7622./packageAPI/pages/api/soter-authentication/soter-authentication>_<7622./packageAPI/pages/api/subscribe-message/subscribe-message>_<7622./packageAPI/pages/ar/2dmarker-ar/2dmarker-ar>_<7622./packageAPI/pages/ar/osd-ar/osd-ar>_<7622./packageAPI/pages/ar/plane-ar/plane-ar>_<7622./packageAPI/pages/ar/visionkit-basic/visionkit-basic>_<7622./packageAPI/pages/device/add-contact/add-contact>_<7622./packageAPI/pages/device/bluetooth/bluetooth>_<7622./packageAPI/pages/device/bluetooth/slave/slave>_<7622./packageAPI/pages/device/capture-screen/capture-screen>_<7622./packageAPI/pages/device/clipboard-data/clipboard-data>_<7622./packageAPI/pages/device/get-battery-info/get-battery-info>_<7622./packageAPI/pages/device/get-network-type/get-network-type>_<7622./packageAPI/pages/device/get-system-info/get-system-info>_<7622./packageAPI/pages/device/ibeacon/ibeacon>_<7622./packageAPI/pages/device/make-phone-call/make-phone-call>_<7622./packageAPI/pages/device/on-accelerometer-change/on-accelerometer-change>_<7622./packageAPI/pages/device/on-compass-change/on-compass-change>_<7622./packageAPI/pages/device/on-network-status-change/on-network-status-change>_<7622./packageAPI/pages/device/scan-code/scan-code>_<7622./packageAPI/pages/device/screen-brightness/screen-brightness>_<7622./packageAPI/pages/device/vibrate/vibrate>_<7622./packageAPI/pages/device/wifi/wifi>_<7622./packageAPI/pages/framework/resizable/resizable>_<7622./packageAPI/pages/framework/two-way-bindings/two-way-bindings>_<7622./packageAPI/pages/framework/wxs/movable>_<7622./packageAPI/pages/framework/wxs/nearby>_<7622./packageAPI/pages/framework/wxs/sidebar>_<7622./packageAPI/pages/framework/wxs/stick-top>_<7622./packageAPI/pages/framework/wxs/wxs>_<7622./packageAPI/pages/location/choose-location/choose-location>_<7622./packageAPI/pages/location/get-location/get-location>_<7622./packageAPI/pages/location/open-location/open-location>_<7622./packageAPI/pages/media/audio/audio>_<7622./packageAPI/pages/media/background-audio/background-audio>_<7622./packageAPI/pages/media/file/file>_<7622./packageAPI/pages/media/image/image>_<7622./packageAPI/pages/media/load-font-face/load-font-face>_<7622./packageAPI/pages/media/media-container/media-container>_<7622./packageAPI/pages/media/video/video>_<7622./packageAPI/pages/media/voice/voice>_<7622./packageAPI/pages/network/download-file/download-file>_<7622./packageAPI/pages/network/mdns/mdns>_<7622./packageAPI/pages/network/request/request>_<7622./packageAPI/pages/network/udp-socket/udp-socket>_<7622./packageAPI/pages/network/upload-file/upload-file>_<7622./packageAPI/pages/network/web-socket/web-socket>_<7622./packageAPI/pages/page/action-sheet/action-sheet>_<7622./packageAPI/pages/page/animation/animation>_<7622./packageAPI/pages/page/canvas/canvas>_<7622./packageAPI/pages/page/get-wxml-node-info/get-wxml-node-info>_<7622./packageAPI/pages/page/intersection-observer/intersection-observer>_<7622./packageAPI/pages/page/modal/modal>_<7622./packageAPI/pages/page/navigation-bar-loading/navigation-bar-loading>_<7622./packageAPI/pages/page/navigator/navigator>_<7622./packageAPI/pages/page/page-scroll/page-scroll>_<7622./packageAPI/pages/page/pull-down-refresh/pull-down-refresh>_<7622./packageAPI/pages/page/set-navigation-bar-title/set-navigation-bar-title>_<7622./packageAPI/pages/page/toast/toast>_<7622./packageAPI/pages/performance/get-performance/get-performance>_<7622./packageAPI/pages/storage/get-background-fetch-data/get-background-fetch-data>_<7622./packageAPI/pages/storage/get-background-prefetch-data/get-background-prefetch-data>_<7622./packageAPI/pages/storage/storage/storage>_<7622./packageAPI/pages/worker/worker/worker", + "./packageAPI/pages/api/choose-address/choose-address.wxml", + "./packageAPI/pages/api/choose-invoice-title/choose-invoice-title.wxml", + "./packageAPI/pages/api/custom-message/custom-message.wxml", + "./packageAPI/pages/api/get-user-info/get-user-info.wxml", + "./packageAPI/pages/api/jump/jump.wxml", + "./packageAPI/pages/api/login/login.wxml", + "./packageAPI/pages/api/request-payment/request-payment.wxml", + "./packageAPI/pages/api/setting/setting.wxml", + "./packageAPI/pages/api/share/share.wxml", + "./packageAPI/pages/api/share-button/share-button.wxml", + "./packageAPI/pages/api/soter-authentication/soter-authentication.wxml", + "./packageAPI/pages/api/subscribe-message/subscribe-message.wxml", + "./packageAPI/pages/ar/2dmarker-ar/2dmarker-ar.wxml", + "./packageAPI/pages/ar/osd-ar/osd-ar.wxml", + "./packageAPI/pages/ar/plane-ar/plane-ar.wxml", + "./packageAPI/pages/ar/visionkit-basic/visionkit-basic.wxml", + "./packageAPI/pages/device/add-contact/add-contact.wxml", + "./packageAPI/pages/device/bluetooth/bluetooth.wxml", + "./packageAPI/pages/device/bluetooth/slave/slave.wxml", + "./packageAPI/pages/device/capture-screen/capture-screen.wxml", + "./packageAPI/pages/device/clipboard-data/clipboard-data.wxml", + "./packageAPI/pages/device/get-battery-info/get-battery-info.wxml", + "./packageAPI/pages/device/get-network-type/get-network-type.wxml", + "./packageAPI/pages/device/get-system-info/get-system-info.wxml", + "./packageAPI/pages/device/ibeacon/ibeacon.wxml", + "./packageAPI/pages/device/make-phone-call/make-phone-call.wxml", + "./packageAPI/pages/device/on-accelerometer-change/on-accelerometer-change.wxml", + "./packageAPI/pages/device/on-compass-change/on-compass-change.wxml", + "./packageAPI/pages/device/on-network-status-change/on-network-status-change.wxml", + "./packageAPI/pages/device/scan-code/scan-code.wxml", + "./packageAPI/pages/device/screen-brightness/screen-brightness.wxml", + "./packageAPI/pages/device/vibrate/vibrate.wxml", + "./packageAPI/pages/device/wifi/wifi.wxml", + "./packageAPI/pages/framework/resizable/resizable.wxml", + "./packageAPI/pages/framework/two-way-bindings/two-way-bindings.wxml", + "./packageAPI/pages/framework/wxs/movable.wxml", + "./packageAPI/pages/framework/wxs/nearby.wxml", + "./packageAPI/pages/framework/wxs/sidebar.wxml", + "./packageAPI/pages/framework/wxs/stick-top.wxml", + "./packageAPI/pages/framework/wxs/wxs.wxml", + "./packageAPI/pages/location/choose-location/choose-location.wxml", + "./packageAPI/pages/location/get-location/get-location.wxml", + "./packageAPI/pages/location/open-location/open-location.wxml", + "./packageAPI/pages/media/audio/audio.wxml", + "./packageAPI/pages/media/background-audio/background-audio.wxml", + "./packageAPI/pages/media/file/file.wxml", + "./packageAPI/pages/media/image/image.wxml", + "./packageAPI/pages/media/load-font-face/load-font-face.wxml", + "./packageAPI/pages/media/media-container/media-container.wxml", + "./packageAPI/pages/media/video/video.wxml", + "./packageAPI/pages/media/voice/voice.wxml", + "./packageAPI/pages/network/download-file/download-file.wxml", + "./packageAPI/pages/network/mdns/mdns.wxml", + "./packageAPI/pages/network/request/request.wxml", + "./packageAPI/pages/network/udp-socket/udp-socket.wxml", + "./packageAPI/pages/network/upload-file/upload-file.wxml", + "./packageAPI/pages/network/web-socket/web-socket.wxml", + "./packageAPI/pages/page/action-sheet/action-sheet.wxml", + "./packageAPI/pages/page/animation/animation.wxml", + "./packageAPI/pages/page/canvas/canvas.wxml", + "./packageAPI/pages/page/get-wxml-node-info/get-wxml-node-info.wxml", + "./packageAPI/pages/page/intersection-observer/intersection-observer.wxml", + "./packageAPI/pages/page/modal/modal.wxml", + "./packageAPI/pages/page/navigation-bar-loading/navigation-bar-loading.wxml", + "./packageAPI/pages/page/navigator/navigator.wxml", + "./packageAPI/pages/page/page-scroll/page-scroll.wxml", + "./packageAPI/pages/page/pull-down-refresh/pull-down-refresh.wxml", + "./packageAPI/pages/page/set-navigation-bar-title/set-navigation-bar-title.wxml", + "./packageAPI/pages/page/toast/toast.wxml", + "./packageAPI/pages/performance/get-performance/get-performance.wxml", + "./packageAPI/pages/storage/get-background-fetch-data/get-background-fetch-data.wxml", + "./packageAPI/pages/storage/get-background-prefetch-data/get-background-prefetch-data.wxml", + "./packageAPI/pages/storage/storage/storage.wxml", + "./packageAPI/pages/worker/worker/worker.wxml", + "./packageAPI/pages/framework/resizable/resizable.wxs", + "./packageAPI/pages/framework/wxs/movable.wxs", + "./packageAPI/pages/framework/wxs/nearby.wxs", + "./packageAPI/pages/framework/wxs/sidebar.wxs", + "./packageAPI/pages/framework/wxs/stick-top.wxs", + "-gn", + "$7061636b6167654150492f", + ]; + const storagePath = path.resolve( + __dirname, + `miniprogram-demo/${this.test?.title}` + ); + try { + fs.mkdirSync(storagePath, { recursive: true }); + } catch (error) {} + const n = JSON.parse(await node.wcc(args, projectPath, storagePath)); + const w = JSON.parse(await wine.wcc(args, projectPath)); + fs.writeFileSync( + `${storagePath}/wine-output.json`, + JSON.stringify(w, null, 4) + ); + fs.writeFileSync( + `${storagePath}/node-output.json`, + JSON.stringify(n, null, 4) + ); + assert.deepEqual(w, n); + }); + }); +}); diff --git a/test/wcc.disassembly.cpp b/test/wcc.disassembly.cpp index e9397d6..88811e9 100644 --- a/test/wcc.disassembly.cpp +++ b/test/wcc.disassembly.cpp @@ -11296,6 +11296,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( char v96[4]; // [esp+318h] [ebp-160h] BYREF char v97[348]; // [esp+31Ch] [ebp-15Ch] BYREF + // ParseSource - 0 std::string::substr(v95, a2, a2[1] - 5, 0xFFFFFFFF); lpuexcpta = std::operator==((int)v95, ".wxml"); std::string::_M_dispose((void **)v95); @@ -11309,6 +11310,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( lpuexcpt = (struct _Unwind_Exception *)WXML::DOMLib::Parser::Parse((int)v95, a1, *a3, (int)a8, (int)a2, &v66); if ( !lpuexcpt ) { + // ParseSource - 5 WXML::DOMLib::Parser::GetParsed(&v91, (WXML::DOMLib::Parser *)v95); v13 = std::map>::operator[](a9, (int)a2); *(_DWORD *)v13 = v91; @@ -11330,6 +11332,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( std::operator<<>(v15, a4); std::string::_M_dispose((void **)&v91); } + // ParseSource - 10 for ( i = 0; -1227133513 * (((char *)v67 - (char *)v66) >> 4) > i; ++i ) { v74[1] = 0; @@ -11410,7 +11413,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( std::string::_M_dispose((void **)v87); std::basic_stringstream,std::allocator>::~basic_stringstream((int)&v91); v55 = 1; // 返回值,非0 - LABEL_20: + LABEL_20: std::string::_M_dispose((void **)v81); std::string::_M_dispose(v79); std::string::_M_dispose((void **)&v76); @@ -11504,6 +11507,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( std::string::_M_dispose((void **)&v76); std::string::_M_dispose(v74); } + // ParseSource - 15 std::stringbuf::str((int)&v91, (int)v90); std::string::operator=((unsigned __int8 **)&v69, (int)&v91); @@ -11522,6 +11526,7 @@ struct _Unwind_Exception *__usercall WXML::Compiler::ParseSource@( std::vector::~vector((void **)&v66); } // end isWXML + // ParseSource - 20 else { std::string::substr(v95, a2, a2[1] - 4, 0xFFFFFFFF); @@ -16985,7 +16990,7 @@ _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, nigh { std::string::basic_string((char *)v67, (int)(a1 + 11)); std::string::operator=(a1 + 11, (char *)&byte_551F04); - std::string::basic_string(v82, (char *)&asc_5527F4[4]); + std::string::basic_string(v82, (char *)&asc_5527F4[4]); // { v45 = night::NSASTParse::is_punctuation(a1, (int)v82); std::string::_M_dispose(v82); if ( v45 ) @@ -17209,19 +17214,19 @@ _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, nigh std::string::_M_dispose(v82); } std::string::_M_dispose((void **)v81); - } + } // end arguments std::string::_M_dispose(v80); v22 = 1; v23 = 1; v24 = 1; v25 = 1; - v32 = 1; - v29 = 1; v26 = 1; - v53 = 1; + v29 = 1; + v32 = 1; v38 = 1; - goto LABEL_61; - } + v53 = 1; + goto LABEL_61; // LABEL_62 + }// end this is_op_self = 1; } v38 = 1; @@ -17229,7 +17234,7 @@ _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, nigh v53 = 1; } v26 = 1; - } + } // return end v29 = 1; } v32 = 1; @@ -17369,7 +17374,7 @@ _DWORD *__userpurge night::NSASTParse::ast_dispatch@(_DWORD *a1@, nigh goto LABEL_113; } goto LABEL_112; - } + }// end is_op_self LABEL_61: std::string::_M_dispose(v79); goto LABEL_62; @@ -17795,8 +17800,8 @@ unsigned int *__fastcall night::NSASTParse::ast_if(int *a1) v7 = night::NSGod::gen_son(v6, (int)v9); std::string::_M_dispose(v9); v7[51] = (unsigned int)v2; - v7[53] = 0; v7[52] = (unsigned int)v3; + v7[53] = 0; if ( (unsigned __int8)std::operator!=((int)&night::NS_TYPE_PROG_NO_SEM, (int)v3) ) { if ( !night::NSToken::eof(a1[7]) ) @@ -18113,11 +18118,15 @@ _DWORD *__thiscall night::NSASTParse::ast_obj_op(int *this, int a2) break; } while ( !(unsigned __int8)std::operator!=("[", v10) ); + // == + if ( night::NSASTParse::is_obj_op_self(this, 0, v8) ) return night::NSASTParse::ast_obj_op_self(this, (int)v13); v5 = night::NSToken::peek(this[7]); + if ( v5 && std::operator==(".", (int)(v5 + 15)) ) return (_DWORD *)night::NSASTParse::ast_obj_dot(v13); + return v13; } // 4155E3: variable 'v2' is possibly undefined @@ -18282,30 +18291,42 @@ _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) std::string::basic_string((char *)v55, (int)&night::std_v_n); v27 = night::NSGod::gen_girl(v43, (int)v55); std::string::_M_dispose(v55); + v44 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_v_n); v22 = night::NSGod::gen_girl(v44, (int)v55); std::string::_M_dispose(v55); + v45 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::std_v_n); v20 = night::NSGod::gen_girl(v45, (int)v55); std::string::_M_dispose(v55); + v46 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SWITCH); v47 = night::NSGod::gen_son(v46, (int)v55); std::string::_M_dispose(v55); + + // offset_232 v47[58] = v27; + // offset_204 v47[51] = 0; + // offset_236 v47[59] = v22; + // offset_240 v47[60] = v20; - std::string::basic_string(v55, (char *)asc_5527F4); + + std::string::basic_string(v55, (char *)asc_5527F4); // "(\000)\000{" night::NSASTParse::ignore_punc(a1, (int)v55); v16 = v1; std::string::_M_dispose(v55); + v47[51] = night::NSASTParse::ast_expression(v16); + std::string::basic_string(v55, (char *)&asc_5527F4[2]); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); + std::string::basic_string(v55, (char *)&asc_5527F4[4]); night::NSASTParse::ignore_punc(a1, (int)v55); std::string::_M_dispose(v55); @@ -18317,16 +18338,19 @@ _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) std::string::_M_dispose(v55); if ( !v28 ) break; + std::string::basic_string(v55, "case"); night::NSASTParse::ignore_buildin_kw(a1, (int)v55); std::string::_M_dispose(v55); v2 = a1[7]; + // int v2 v3 = *(_DWORD *)(v2 + 4); v19 = *(_DWORD *)(v3 + 52); v21 = *(_DWORD *)(v3 + 56); v29 = night::NSToken::peek(v2); if ( !v29 ) goto LABEL_4; + std::string::basic_string(v54, "-"); v23 = 1; if ( !night::NSASTParse::is_op(a1, (int)v54) ) @@ -18366,12 +18390,13 @@ _DWORD *__fastcall night::NSASTParse::ast_switch(int *a1) std::string::_M_dispose(v54); if ( !v30 ) { -LABEL_4: + LABEL_4: lpuexcpta = (struct _Unwind_Exception *)a1[7]; std::string::basic_string(v55, "Expected variable|numer|boolean|string"); night::NSToken::err((int)lpuexcpta, (int)v55, v19, v21, 1); } } + // v47->offset_232 v31 = (void **)v47[58]; v55[0] = night::NSToken::next(a1[7]); std::vector::emplace_back(v31, (char **)v55); @@ -18435,6 +18460,7 @@ LABEL_4: std::string::basic_string((char *)v55, (int)&night::std_v_n); v52 = (void **)night::NSGod::gen_girl(v36, (int)v55); std::string::_M_dispose(v55); + v37 = v52; v26 = (void *)a1[6]; std::string::basic_string((char *)v55, (int)&night::NS_TYPE_SKIP); @@ -18442,7 +18468,9 @@ LABEL_4: std::vector::emplace_back(v37, (char **)v54); std::string::_M_dispose(v55); } + // v47->offset_236.push_back() std::vector>>::push_back(v47[59], &v52); + if ( night::NSToken::eof(a1[7]) ) { lpuexcptb = (struct _Unwind_Exception *)a1[7]; @@ -18910,6 +18938,7 @@ _DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) std::string::_M_dispose(v20); std::string::operator=((unsigned int *)v19[0] + 15, "]"); std::vector::push_back(v13, (char **)v19); + v10 = (void *)a1[6]; std::string::basic_string((char *)v20, (int)&night::NS_TYPE_ARRAY); v19[0] = night::NSGod::gen_son(v10, (int)v20); @@ -18917,6 +18946,7 @@ _DWORD *__fastcall night::NSASTParse::ast_new_array(int *a1) v2 = (unsigned int *)v19[0]; *((_DWORD *)v19[0] + 57) = v13; std::string::operator=(v2 + 27, (char *)&byte_551F04); + v14 = night::NSASTParse::make_call_or_just_expression(a1, (_DWORD *)v19[0]); v3 = night::NSToken::peek(a1[7]); if ( v3 ) @@ -20181,9 +20211,11 @@ _BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *thi std::string::basic_string(v26, v3); std::string::_M_dispose((void **)v39); ++*(_DWORD *)(a2 + 32); - this[8] = 0; - *((_DWORD *)this + 1) = 0; + *(_DWORD *)this = this + 8; + *((_DWORD *)this + 1) = 0; + this[8] = 0; + night::NSCompileJs::compile[abi:cxx11](a2, *(_DWORD *)(a3 + 192)); std::string::operator+=(v39); std::string::_M_dispose((void **)v39); @@ -20224,6 +20256,7 @@ _BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *thi std::string::_M_dispose((void **)v39); std::string::operator+=(&v27); *(_DWORD *)(a2 + 48) += v28; + v11 = (_DWORD *)std::vector::at(*(_DWORD **)(a3 + 196), lpuexcpt); night::NSCompileJs::compile[abi:cxx11](a2, *v11); v12 = std::string::append(v38, "),"); @@ -20232,6 +20265,7 @@ _BYTE *__thiscall night::NSCompileJs::compile_obj_property[abi:cxx11](_BYTE *thi std::string::_M_dispose((void **)v39); std::string::_M_dispose(v38); *(_DWORD *)(a2 + 48) += 2; + std::operator+((int)v29, "null==", (int)v26); v13 = std::string::append(v29, "?undefined:"); std::string::basic_string(v30, v13); @@ -23001,6 +23035,7 @@ int __fastcall WXML::DOMLib::WXMLDom::RewriteTree(int a1) break; if ( std::operator==(*(_DWORD *)(v16 + 8 * (_DWORD)Strc), "block") ) { + // int a1 std::string::operator=(*(unsigned int **)(*(_DWORD *)(a1 + 72) + 8 * (_DWORD)Strc), "block"); v34 = v17; } @@ -23924,6 +23959,8 @@ int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( v16 = (struct _Unwind_Exception *)(a11 + 4); lpuexcpt = v16; } + // 寻找结束 + std::string::_M_dispose(&Block); if ( v59 != lpuexcpt ) { @@ -23946,9 +23983,11 @@ int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( } if ( v59 == v54 || (unsigned __int8)std::operator<((int)&Block, (int)v54 + 16) ) std::__throw_out_of_range((std::out_of_range *)"map::at"); + std::string::basic_string((char *)&v80, (int)v54 + 40); std::string::_M_dispose(&Block); v87 = 0; + // void *v86[2] v86[0] = &v87; v86[1] = 0; v85 = 0; @@ -23988,7 +24027,7 @@ int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( } if ( *(_DWORD **)&v77[1] != v78 && *(v78 - 7) == 1 ) std::vector::push_back((char **)&v77[1], &v85); - lpuexcptc = 1; + lpuexcptc = 1; // 当前下标 // int v23 v23 = 0; while ( -1227133513 * (((int)v78 - *(_DWORD *)&v77[1]) >> 2) > lpuexcptc ) @@ -24016,7 +24055,7 @@ int __cdecl WXML::DOMLib::WXMLDom::DealSingleTokenToOps( std::string::_M_dispose(v86); std::string::_M_dispose((void **)&v80); } - } + } // end a8 // DealSingleTokenToOps - 15 if ( a7 ) { @@ -25584,9 +25623,11 @@ LABEL_9: v163 = std::operator<<(v301, v342); v164 = std::operator<<>(v163, "\""); v302 = std::operator<<>(v164, ":\""); + v165 = (int *)WXML::DOMLib::Token::ToAttrContent[abi:cxx11]((int)v258 + v324 + 24); WXML::Rewrite::ToStringCode((int)&Str, v165); v166 = std::operator<<(v302, (int *)&Str); + std::operator<<>(v166, "\","); std::string::_M_dispose((void **)&Str); std::string::_M_dispose((void **)v342);