From bb7132cc503f75de225f8f08eeb160140a5a548a Mon Sep 17 00:00:00 2001 From: rentangyu Date: Thu, 11 Sep 2025 15:21:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E6=A0=87=E5=88=97=E5=8F=B7=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=97=B6=EF=BC=8C=E4=BD=BF=E7=94=A8=E8=A1=8C?= =?UTF-8?q?=E5=8F=B7=E7=9B=B8=E5=90=8C=E5=88=97=E5=8F=B7=E7=9A=84=E6=9C=80?= =?UTF-8?q?=E5=B0=8F=E7=9A=84=E5=85=83=E7=B4=A0=E4=BD=9C=E4=B8=BA=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit issue:https://gitee.com/openharmony/ability_ability_runtime/issues/ICXJ7E Signed-off-by: rentangyu --- .../js_environment/src/source_map.cpp | 7 ++- .../source_map_test/source_map_test.cpp | 43 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/js_environment/frameworks/js_environment/src/source_map.cpp b/js_environment/frameworks/js_environment/src/source_map.cpp index 8553c87256e..9b8e232f790 100644 --- a/js_environment/frameworks/js_environment/src/source_map.cpp +++ b/js_environment/frameworks/js_environment/src/source_map.cpp @@ -191,7 +191,7 @@ void SourceMap::SplitSourceMap(const std::string& sourceMapData) } } if (StringStartWith(tmp.c_str(), FLAG_MAPPINGS)) { // mapping - ExtractSourceMapData(tmp.substr(FLAG_MAPPINGS_LEN, tmp.size() - FLAG_MAPPINGS_LEN - 1), mapData); + ExtractSourceMapData(tmp.substr(FLAG_MAPPINGS_LEN, tmp.size() - FLAG_MAPPINGS_LEN - INDEX_TWO), mapData); continue; } if (StringStartWith(tmp.c_str(), FLAG_ENTRY_PACKAGE_INFO)) { // entryPackageInfo @@ -304,6 +304,11 @@ MappingInfo SourceMap::Find(int32_t row, int32_t col, const SourceMapData& targe left = mid + 1; } } + + if (targetMap.afterPos_[res].afterRow != row && targetMap.afterPos_[res + 1].afterRow == row) { + res++; + } + auto pos = sources.find(WEBPACK); if (pos != std::string::npos) { sources.replace(pos, sizeof(WEBPACK) - 1, ""); diff --git a/js_environment/test/unittest/source_map_test/source_map_test.cpp b/js_environment/test/unittest/source_map_test/source_map_test.cpp index 95b7974c16f..2082b31d17c 100644 --- a/js_environment/test/unittest/source_map_test/source_map_test.cpp +++ b/js_environment/test/unittest/source_map_test/source_map_test.cpp @@ -253,6 +253,49 @@ HWTEST_F(SourceMapTest, JsEnv_SourceMap_1100, Function | MediumTest | Level1) GTEST_LOG_(INFO) << "JsEnv_SourceMap_1100 end"; } +/** + * @tc.number: JsEnv_SourceMap_1200 + * @tc.name: Find + * @tc.desc: Verifying Find succeeded. + * @tc.require: #I6T4K1 + */ +HWTEST_F(SourceMapTest, JsEnv_SourceMap_1200, Function | MediumTest | Level1) +{ + GTEST_LOG_(INFO) << "JsEnv_SourceMap_1200 start"; + std::string sourceMaps = "{\n" + " \"entry|entry|1.0.0|src/main/ets/pages/Index.ts\": {\n" + " \"version\": 3,\n" + " \"file\": \"Index.ets\",\n" + " \"sources\": [\n" + " \"entry/src/main/ets/pages/Index.ets\"\n" + " ],\n" + " \"names\": [],\n" + " \"mappings\": \";;;;IAuBW,aAAa,GAAE,SAAS;IACP,aAAa,GAAE,UAAU;;AAxBrD,MAAM,MAAM,UAAU;" + "IACpB,KAAK,IAAI;CACV;MAIM,uBAAuB;IAF9B;;6BAIoC,SAAS;uGACF,UAAU,CAAC,KAAK;;KAP1D;;6BAMmC," + "SAAS;wGACF,UAAU,CAAC,KAAK;;IADzD,CAAC,KAAK;IAAC,aAAa,EAAE,SAAS,CAAY;IAC3C,CAAC,IAAI;IAAC," + "CAAC,KAAK;IAAC,aAAa,EAAE,UAAU,CAAmB;IAEzD;;YACE,MAAM;;;;;4CAEJ,oBAAoB,OAAC;wBACnB,aAAa,EAAE," + "IAAI,CAAC,aAAa;qBAClC;;;;4BADC,aAAa,EAAE,IAAI,CAAC,aAAa;;;;;;;;;;QAHrC,MAAM;KAMP;;;;;;;;;;;;;;;;" + "AAGH,MAAM,OAAQ,oBAAoB;IADlC;;;;;4DAGsC,SAAS;;sDACpC,eAAe;;;KALzB;;;;;;;;;;;;;;;;;;IAIC,kDAAwB,SAAS," + "EAAY;QAApC,aAAa;;;QAAb,aAAa,WAAE,SAAS;;;IACjC,oDAAyC,UAAU,EAAA;QAAzB,aAAa;;;QAAb,aAAa,WAAE,UAAU;;;" + "IAEnD;;YACE,MAAM,QAAC,EAAC,KAAK,EAAE,CAAC,EAAC;;;YACf,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;" + ";YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;;;;4CACJ,YAAY,OAAC;wBACX,aAAa,EAAE,IAAI,CAAC,aAAa" + ";wBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;qBAClC;;;;4BAFC,aAAa,EAAE,IAAI,CAAC,aAAa;4BACjC,aAAa,EAAE,IAAI,CAAC,aAAa" + ";;;;;;;wBADjC,aAAa,EAAE,IAAI,CAAC,aAAa;wBACjC,aAAa,EAAE,IAAI,CAAC,aAAa;;;;;QALrC,MAAM;KAQP;;;;;MAII,YAAY;" + "IADnB;;uGAEoC,SAAS;uGACR,UAAU,CAAC,KAAK;;KALpD;;wGAImC,SAAS;wGACR,UAAU,CAAC,KAAK;;IADnD,CAAC,KAAK;IAxCR," + "QAAA,CAwCS,aAAa,EAAE,SAAS,CAAY;IAC3C,CAAC,KAAK;IAzCR,QAAA,CAyCS,aAAa,EAAE,UAAU,CAAmB;IAEnD;;YACE,MAAM;;;" + "YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C,IAAI;;YACJ,IAAI,QAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa;;QAA3C," + "IAAI;QAFN,MAAM;KAIP\"\n" + " \"entry-package-info\": \"entry|1.0.0\n" + " }\n" + "}"; + auto modSourceMap = std::make_shared(); + modSourceMap->SplitSourceMap(sourceMaps); + std::string stackStr = "at ChildComponenttest48 (entry|entry|1.0.0|src/main/ets/pages/Index.ts:75:37)"; + std::string stack = modSourceMap->TranslateBySourceMap(stackStr); + EXPECT_STREQ(stack.c_str(), "at ChildComponenttest48 entry (entry/src/main/ets/pages/Index.ets:25:12)\n"); + GTEST_LOG_(INFO) << "JsEnv_SourceMap_1200 end"; +} + /** * @tc.number: JsEnv_SourceMap_1300 * @tc.name: GetPosInfo -- Gitee