From c089e9f201a48338fcdff368c985a0975bac4cb2 Mon Sep 17 00:00:00 2001 From: rentangyu Date: Tue, 16 Sep 2025 11:06:13 +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=EF=BC=8C=E5=AD=98=E5=9C=A8=E8=AE=BF?= =?UTF-8?q?=E9=97=AE=E8=B6=8A=E7=95=8C=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit issue:[Bug]:https://gitee.com/openharmony/ability_ability_runtime/issues/ICXUGY Signed-off-by: rentangyu --- .../js_environment/src/source_map.cpp | 6 ++- .../source_map_test/source_map_test.cpp | 44 ++++++++++++++++++- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/js_environment/frameworks/js_environment/src/source_map.cpp b/js_environment/frameworks/js_environment/src/source_map.cpp index 9b8e232f79..ddcae43c4a 100644 --- a/js_environment/frameworks/js_environment/src/source_map.cpp +++ b/js_environment/frameworks/js_environment/src/source_map.cpp @@ -278,7 +278,7 @@ MappingInfo SourceMap::Find(int32_t row, int32_t col, const SourceMapData& targe size_t realSourceIndex = std::min(REAL_SOURCE_INDEX, targetMap.sources_.size()); std::string sources = targetMap.sources_.substr(realSourceIndex, targetMap.sources_.size() - realSourceIndex - 1); - if (key.rfind(".js") != std::string::npos) { + if (key.rfind(".js") == key.size() - INDEX_THREE) { return MappingInfo { .row = row, .col = col, @@ -305,7 +305,9 @@ MappingInfo SourceMap::Find(int32_t row, int32_t col, const SourceMapData& targe } } - if (targetMap.afterPos_[res].afterRow != row && targetMap.afterPos_[res + 1].afterRow == row) { + if (res + 1 < static_cast(targetMap.afterPos_.size()) && + targetMap.afterPos_[res].afterRow != row && + targetMap.afterPos_[res + 1].afterRow == row) { res++; } 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 2082b31d17..e62828c145 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 @@ -284,7 +284,7 @@ HWTEST_F(SourceMapTest, JsEnv_SourceMap_1200, Function | MediumTest | Level1) "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" + "IAAI;QAFN,MAAM;KAIP\",\n" " \"entry-package-info\": \"entry|1.0.0\n" " }\n" "}"; @@ -317,6 +317,48 @@ HWTEST_F(SourceMapTest, JsEnv_SourceMap_1300, Function | MediumTest | Level1) GTEST_LOG_(INFO) << "JsEnv_SourceMap_1300 end"; } +/** + * @tc.number: JsEnv_SourceMap_1400 + * @tc.name: Find + * @tc.desc: Verifying Find succeeded. + */ +HWTEST_F(SourceMapTest, JsEnv_SourceMap_1400, Function | MediumTest | Level1) +{ + GTEST_LOG_(INFO) << "JsEnv_SourceMap_1400 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:179:5)"; + std::string stack = modSourceMap->TranslateBySourceMap(stackStr); + EXPECT_STREQ(stack.c_str(), "at ChildComponenttest48 entry (entry/src/main/ets/pages/Index.ets:45:5)\n"); + GTEST_LOG_(INFO) << "JsEnv_SourceMap_1400 end"; +} + /** * @tc.number: JsEnv_SourceMap_1500 * @tc.name: GetPosInfo