Skip to content

script: Add line number argument to module script compilation functions#39544

Merged
jdm merged 6 commits intoservo:mainfrom
RichardTjokroutomo:issue-39415
Sep 30, 2025
Merged

script: Add line number argument to module script compilation functions#39544
jdm merged 6 commits intoservo:mainfrom
RichardTjokroutomo:issue-39415

Conversation

@RichardTjokroutomo
Copy link
Copy Markdown
Contributor

@RichardTjokroutomo RichardTjokroutomo commented Sep 28, 2025

Script: added line_no as argument to both fetch_inline_module_script() & compile_module_script() to fix the inline script reporting wrong line issue (#39415).

Originally, the function compile_module_script() hardwires the value 1 when invoking CompileOptionsWrapper::new(). This is fine if the script is written in separate JS file, but for inline scripts, it will cause confusion if the <script> tag doesn't start from line #1.

line_no is obtained from line_number, a member variable from HTMLScriptElement.

Credits to @jdm for actually pointing out which functions to fix.

Testing: Created a WPT test for this change, specifically: tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-5.html.

Fixes: issue #39415

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

🤖 Opened new upstream WPT pull request (web-platform-tests/wpt#55121) with upstreamable changes.

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

✍ Updated existing upstream WPT pull request (web-platform-tests/wpt#55121) title and body.

@TimvdLippe TimvdLippe added the T-linux-wpt Do a try run of the WPT label Sep 28, 2025
@github-actions github-actions bot removed the T-linux-wpt Do a try run of the WPT label Sep 28, 2025
@github-actions
Copy link
Copy Markdown

🔨 Triggering try run (#18070716458) for Linux (WPT)

@github-actions
Copy link
Copy Markdown

Test results for linux-wpt from try job (#18070716458):

Flaky unexpected result (22)
  • OK /IndexedDB/idbfactory_open.any.html
    • FAIL [expected PASS] subtest: Calling open() with version argument 1.5 should not throw.

      assert_equals: version expected 1 but got 9007199254740991
      

  • TIMEOUT [expected PASS] /_mozilla/shadow-dom/move-element-with-ua-shadow-tree-crash.html (#39473)
  • CRASH [expected ERROR] /_webgl/conformance2/textures/misc/tex-input-validation.html (#38890)
  • FAIL [expected PASS] /css/CSS2/text/letter-spacing-applies-to-012.xht
  • FAIL [expected PASS] /css/WOFF2/metadatadisplay-schema-credits-006.xht
  • FAIL [expected PASS] /css/css-flexbox/table-item-flex-percentage-width.html
  • OK /css/css-fonts/variations/at-font-face-font-matching.html (#20684)
    • FAIL [expected PASS] subtest: Matching font-weight: '430' should prefer '420 440' over '450 460'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

    • FAIL [expected PASS] subtest: Matching font-weight: '399' should prefer '500 501' over '502 510'

      assert_equals: Unexpected font on test element expected 487 but got 532
      

  • FAIL [expected PASS] /css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-1.html
  • FAIL [expected PASS] /css/css-sizing/hori-block-size-small-or-larger-than-container-with-min-or-max-content-2a.html
  • OK [expected ERROR] /fetch/fetch-later/quota/same-origin-iframe/empty-payload.https.window.html (#35176)
  • OK /html/browsers/browsing-the-web/navigating-across-documents/008.html (#24456)
    • PASS [expected FAIL] subtest: Link with onclick form submit to javascript url and href navigation
  • OK /html/browsers/browsing-the-web/navigating-across-documents/initial-empty-document/iframe-nosrc.html (#34819)
    • FAIL [expected PASS] subtest: link click

      assert_equals: expected "http://web-platform.test:8000/common/blank.html?1" but got "about:blank"
      

  • OK /html/browsers/history/the-history-interface/traverse_the_history_5.html (#21383)
    • PASS [expected FAIL] subtest: Multiple history traversals, last would be aborted
  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/update-the-rendering.html (#24145)
    • TIMEOUT [expected FAIL] subtest: "Flush autofocus candidates" should be happen before a scroll event and animation frame callbacks

      Test timed out
      

  • OK /html/semantics/embedded-content/the-iframe-element/iframe-loading-lazy-reload-location-reload.html (#32595)
    • FAIL [expected PASS] subtest: Reloading iframe loading='lazy' before it is loaded: location.reload

      uncaught exception: Error: assert_equals: expected "http://web-platform.test:8000/html/semantics/embedded-content/the-iframe-element/support/blank.htm?src" but got "about:blank"
      

  • OK /intersection-observer/callback-cross-realm-report-exception.html (#38829)
    • FAIL [expected PASS] subtest: IntersectionObserver reports the exception from its callback in the callback's global object

      assert_array_equals: lengths differ, expected array ["frame1"] length 1, got [] length 0
      

  • OK /navigation-timing/test-navigation-type-reload.html (#33334)
    • PASS [expected FAIL] subtest: Reload domComplete &gt; Original domComplete
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventEnd &gt; Original domContentLoadedEventEnd
    • PASS [expected FAIL] subtest: Reload domContentLoadedEventStart &gt; Original domContentLoadedEventStart
    • PASS [expected FAIL] subtest: Reload domInteractive &gt; Original domInteractive
    • PASS [expected FAIL] subtest: Reload fetchStart &gt; Original fetchStart
    • PASS [expected FAIL] subtest: Reload loadEventEnd &gt; Original loadEventEnd
    • PASS [expected FAIL] subtest: Reload loadEventStart &gt; Original loadEventStart
  • OK /preload/preload-invalid-resources.html (#39091)
    • PASS [expected FAIL] subtest: Preloading an invalid image (missing) should preload and not re-fetch
  • ERROR /service-workers/idlharness.https.any.html (#36250)
    • PASS [expected TIMEOUT] subtest: ServiceWorkerContainer interface: operation register((TrustedScriptURL or USVString), optional RegistrationOptions)
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation enable()
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation disable()
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation setHeaderValue(ByteString)
    • PASS [expected TIMEOUT] subtest: NavigationPreloadManager interface: operation getState()
  • TIMEOUT [expected OK] /webdriver/tests/classic/find_elements_from_element/find.py
  • OK /webdriver/tests/classic/get_current_url/iframe.py
    • FAIL [expected PASS] subtest: test_iframe

      webdriver.error.NoSuchElementException: no such element (404)
      

    • FAIL [expected PASS] subtest: test_nested_iframe

      webdriver.error.NoSuchElementException: no such element (404)
      

  • OK [expected TIMEOUT] /webmessaging/without-ports/017.html (#24486)
    • PASS [expected TIMEOUT] subtest: origin of the script that invoked the method, about:blank
Stable unexpected results that are known to be intermittent (30)
  • OK /IndexedDB/idbcursor-continuePrimaryKey-exceptions.any.worker.html (#39277)
    • FAIL [expected PASS] subtest: IDBCursor continuePrimaryKey() on object store cursor

      assert_throws_dom: continuePrimaryKey() should throw if source is not an index function "function() {
              cursor.continuePrimaryKey(2, 2);
            }" threw object "TypeError: cursor.continuePrimaryKey is not a function" that is not a DOMException InvalidAccessError: property "code" is equal to undefined, expected 15
      

  • OK /IndexedDB/idbobjectstore_getAll.any.html (#39276)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/idbobjectstore_getAll.any.worker.html (#39400)
    • PASS [expected FAIL] subtest: Get all values with transaction.commit()
  • OK /IndexedDB/key-conversion-exceptions.any.html (#39305)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • OK /IndexedDB/key-conversion-exceptions.any.worker.html (#39284)
    • FAIL [expected PASS] subtest: IDBCursor continue() method with throwing/invalid keys

      assert_throws_exactly: key conversion with throwing getter should rethrow function "() =&gt; {
            receiver[method](key);
          }" threw object "TypeError: receiver[method] is not a function" but we expected it to throw object "getter: throwing from getter"
      

  • FAIL [expected PASS] /_mozilla/css/iframe/hide_and_show.html (#15265)
  • FAIL [expected PASS] /_mozilla/css/stacked_layers.html (#15988)
  • FAIL [expected PASS] /_mozilla/mozilla/sslfail.html (#10760)
  • OK /content-security-policy/frame-ancestors/frame-ancestors-path-ignored.window.html (#36468)
    • PASS [expected FAIL] subtest: A 'frame-ancestors' CSP directive with a URL that includes a path should be ignored.
  • PASS [expected FAIL] /css/css-flexbox/flex-item-content-is-min-width-max-content.html (#39383)
  • FAIL [expected PASS] /css/css-tables/paint/table-border-paint-caption-change.html (#38036)
  • PASS [expected FAIL] /css/css-transitions/render-blocking/no-transition-from-ua-to-blocking-stylesheet.html (#29187)
  • TIMEOUT [expected FAIL] /dom/xslt/large-cdata.html (#38029)
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/max-payload.https.window.html (#35210)
  • ERROR [expected OK] /fetch/fetch-later/quota/same-origin-iframe/multiple-iframes.https.window.html (#35176)
  • OK /fetch/metadata/generated/css-font-face.https.sub.tentative.html (#32732)
    • PASS [expected FAIL] subtest: sec-fetch-dest
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Same site
  • OK /fetch/metadata/generated/css-font-face.sub.tentative.html (#34624)
    • PASS [expected FAIL] subtest: sec-fetch-storage-access - Not sent to non-trustworthy same-site destination
  • OK /html/browsers/browsing-the-web/navigating-across-documents/navigation-unload-same-origin.window.html (#29049)
    • FAIL [expected PASS] subtest: Same-origin navigation started from unload handler must be ignored

      assert_equals: expected "?pass" but got "?fail"
      

  • TIMEOUT /html/browsers/history/the-history-interface/001.html (#12580)
    • FAIL [expected PASS] subtest: traversing history must also traverse hash changes

      assert_equals: (this could cause other failures later on) expected "" but got "test"
      

  • TIMEOUT [expected OK] /html/interaction/focus/the-autofocus-attribute/document-with-fragment-empty.html (#28259)
    • TIMEOUT [expected FAIL] subtest: Autofocus elements in top-level browsing context's documents with empty fragments should work.

      Test timed out
      

  • OK [expected TIMEOUT] /html/interaction/focus/the-autofocus-attribute/supported-elements.html (#24145)
    • FAIL [expected PASS] subtest: Non-HTMLElement should not support autofocus

      promise_test: Unhandled rejection with value: object "TypeError: can't access property "appendChild", w.document.body is null"
      

    • FAIL [expected NOTRUN] subtest: Host element with delegatesFocus including no focusable descendants should be skipped

      assert_equals: expected Element node &lt;input autofocus=""&gt;&lt;/input&gt; but got Element node &lt;body&gt;&lt;div autofocus=""&gt;&lt;/div&gt;&lt;input autofocus=""&gt;&lt;/body&gt;
      

    • FAIL [expected NOTRUN] subtest: Area element should support autofocus

      assert_equals: expected Element node &lt;area autofocus="" href="/common/blank.html"&gt;&lt;/area&gt; but got Element node &lt;body&gt;
      &lt;img src="/media/poster.png" usemap="#map"&gt;
      &lt;map n...
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_escaping-3.html (#24057)
    • FAIL [expected TIMEOUT] subtest: Check that popups from a sandboxed iframe escape the sandbox if allow-popups-to-escape-sandbox is used

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK [expected CRASH] /html/semantics/embedded-content/the-iframe-element/iframe_sandbox_popups_nonescaping-2.html (#22154)
    • FAIL [expected NOTRUN] subtest: Check that popups from a sandboxed iframe do not escape the sandbox

      assert_equals: It came from a sandboxed iframe expected "null" but got "http://web-platform.test:8000"
      

  • OK /html/semantics/forms/form-submission-0/form-submit-iframe-then-location-navigate.html (#29634)
    • PASS [expected FAIL] subtest: Verifies that location navigations take precedence when following form submissions.
  • CRASH [expected OK] /html/semantics/forms/the-fieldset-element/disabled-003.html (#31730)
  • OK /preload/preload-error.sub.html (#37177)
    • PASS [expected FAIL] subtest: CORS (fetch): main
  • FAIL [expected PASS] /shadow-dom/shadow-style-invalidation-vw-units.html (#38468)
  • OK /trusted-types/trusted-types-navigation.html?26-30 (#38807)
    • FAIL [expected PASS] subtest: Navigate a window via form-submission with javascript:-urls in report-only mode.

      promise_test: Unhandled rejection with value: "Unexpected message received: \"No securitypolicyviolation reported!\""
      

  • OK /webdriver/tests/classic/take_element_screenshot/scroll_into_view.py (#39306)
    • FAIL [expected PASS] subtest: test_scroll_into_view

      AssertionError: assert 'iVBORw0KGgoAAAANSUhEUgAAAI4AAAARCAYAAAALzZSeAAACoUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a/+3d/9nV/8xV+cq656Uf393/89lauu+tcjeKZxHHmv93ovtre3efEXf3GuuuqFoPJMP/MzP8Of/dmfcccdd3Ds2DGuuuqFoPJMf/3Xf80rvdIrcezYMa666l9A5ZkuXbrEbDbjqqteBATAm7/5m/P1X//1fMu3fAuS+PRP/3QA7rvvPt71Xd+Va665hmuvvZb3eq/34sKFC9zvvvvu413f9V255ppruPbaa3mv93ovLly4wFX/5xEAP//zP8+HfdiH8UEf9EHY5vM///MBeMd3fEcuXbrEX//1X/Pnf/7n3H777bzHe7wH93vHd3xHLl26xF//9V/z53/+59x+++28x3u8B1f9n0flBXja057G7/zO7/D0pz+dG264AYCv/dqv5SVe4iW4++67WS6X/M7v/A5Pf/rTueGGGwD42q/9Wl7iJV6Cu+++m+uvv56r/s8ieAFuv/12aq08+MEP5n4Pf/jDAbj99tu5/fbbqbXy4Ac/mPs9/OEPB+D222/nqv/TCF6Am2++mWmauO2227jfU57yFABuvvlmbr75ZqZp4rbbbuN+T3nKUwC4+eabuer/NIIX4KEPfSiv+ZqvyYd92Idx9913c/vtt/ORH/mRvMmbvAnXX389D33oQ3nN13xNPuzDPoy7776b22+/nY/8yI/kTd7kTbj++uu56v80ghfiR37kR9ja2uIlX/IlebmXezluvPFGvvd7v5f7/ciP/AhbW1u85Eu+JC/3ci/HjTfeyPd+7/dy1f956O/+7u/84i/+4lx11Yvq7//+76lcddW/HpWrrvrXowL8/d//PVdd9a/APwJaQbF56DF3BwAAAABJRU5ErkJggg==' == 'iVBORw0KGgoAAAANSUhEUgAAAI4AAAARCAYAAAALzZSeAAACoUlEQVR4Ae3AA6AkWZbG8f937o3IzKdyS2Oubdu2bdu2bdu2bWmMnpZKr54yMyLu+Xa3anqmhztr1a/+3d/9nV/8xV+cq656Uf393/89wTON48h7vdd7sb29zYu/+Itz1VUvBJVn+pmf+Rn+7M/+jDvuuINjx45x1VUvBJVn+uu//mte6ZVeiWPHjnHVVf8CKs906dIlZrMZV131IiAA3vzN35yv//qv51u+5VuQxKd/+qcDcN999/Gu7/quXHPNNVx77bW813u9FxcuXOB+9913H+/6ru/KNddcw7XXXst7vdd7ceHCBa76P48A+Pmf/3k+7MM+jA/6oA/CNp//+Z8PwDu+4zty6dIl/vqv/5o///M/5/bbb+c93uM9uN87vuM7cunSJf76r/+aP//zP+f222/nPd7jPbjq/zwqL8DTnvY0fud3foenP/3p3HDDDQB87dd+LS/xEi/B3XffzXK55Hd+53d4+tOfzg033ADA137t1/ISL/ES3H333Vx//fVc9X8WwQtw++23U2vlwQ9+MPd7+MMfDsDtt9/O7bffTq2VBz/4wdzv4Q9/OAC33347V/2fRvAC3HzzzUzTxG233cb9nvKUpwBw8803c/PNNzNNE7fddhv3e8pTngLAzTffzFX/pxG8AA996EN5zdd8TT7swz6Mu+++m9tvv52P/MiP5E3e5E24/vrreehDH8prvuZr8mEf9mHcfffd3H777XzkR34kb/Imb8L111/PVf+nEbwQP/IjP8LW1hYv+ZIvycu93Mtx44038r3f+73c70d+5EfY2triJV/yJXm5l3s5brzxRr73e7+Xq/7PQ3/3d3/nF3/xF+eqq15Uf//3f0/lqqv+9ahcddW/HpWrrvrXowL8/d//PVdd9a/APwJma7F5RQE/xgAAAABJRU5ErkJggg=='
      

  • ERROR [expected OK] /workers/constructors/Worker/Worker-constructor.html (#22991)

@github-actions
Copy link
Copy Markdown

✨ Try run (#18070716458) succeeded.

Copy link
Copy Markdown
Member

@mrobinson mrobinson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! I've left some comments above:

@servo-highfive servo-highfive added S-needs-code-changes Changes have not yet been made that were requested by a reviewer. and removed S-awaiting-review There is new code that needs to be reviewed. labels Sep 28, 2025
@mrobinson mrobinson changed the title Added new argument line_no to fetch_inline_module_script & compile_module_script to solve issue 39415 script: Add line number argument to module script compilation functions Sep 28, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

✍ Updated existing upstream WPT pull request (web-platform-tests/wpt#55121) title and body.

@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. and removed S-needs-code-changes Changes have not yet been made that were requested by a reviewer. labels Sep 28, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

Copy link
Copy Markdown
Member

@jdm jdm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good! Just one comment suggestion to allow the linter line length check to pass.

@servo-highfive servo-highfive added S-awaiting-review There is new code that needs to be reviewed. and removed S-awaiting-review There is new code that needs to be reviewed. labels Sep 29, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

@servo-highfive servo-highfive removed the S-awaiting-review There is new code that needs to be reviewed. label Sep 29, 2025
@jdm jdm enabled auto-merge September 29, 2025 10:58
@yezhizhen yezhizhen disabled auto-merge September 29, 2025 11:10
Copy link
Copy Markdown
Member

@yezhizhen yezhizhen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. ./mach fmt to fix lint.
  2. manifest is outdated.
  3. Following typo.

@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Sep 29, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

@jdm jdm added S-fails-tidy `./mach test-tidy` reported errors. and removed S-awaiting-review There is new code that needs to be reviewed. labels Sep 29, 2025
@servo-highfive servo-highfive added the S-awaiting-review There is new code that needs to be reviewed. label Sep 30, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

🛠 These changes could not be applied onto the latest upstream WPT. Servo's copy of the Web Platform Tests may be out of sync.

@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

@yezhizhen
Copy link
Copy Markdown
Member

RichardTjokroutomo and others added 6 commits September 29, 2025 20:58
…& compile_module_script to fix the inline script reporting wrong line issue (servo#39415)

Originally, the function compile_module_script hardwires the value 1 when invoking CompileOptionsWrapper::new(). This is fine if the script is written in separate JS file, but for inline scripts, it will cause confusion if the <script> tag doesn't start from line #1.

Credits to JDM for actually pointing out which functions to fix.

Testing: There are WPT tests for this change, specifically: tests/wpt/tests/html/semantics/scripting-1/the-script-element/module/evaluation-error-5.html
Signed-off-by: RichardTjokroutomo <[email protected]>
Testing: Modified code according to reviewer's comment.
Signed-off-by: RichardTjokroutomo <[email protected]>
Co-authored-by: Josh Matthews <[email protected]>
Signed-off-by: Rocketjumper <[email protected]>
Co-authored-by: Euclid Ye <[email protected]>
Signed-off-by: Rocketjumper <[email protected]>
…ntics/scripting-1/the-script-element/module/evaluation-error-5.html : 11

Signed-off-by: RichardTjokroutomo <[email protected]>
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

📝 Transplanted new upstreamable changes to existing upstream WPT pull request (web-platform-tests/wpt#55121).

@jdm jdm enabled auto-merge September 30, 2025 04:57
@jdm jdm added this pull request to the merge queue Sep 30, 2025
@servo-highfive servo-highfive added the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Sep 30, 2025
Merged via the queue into servo:main with commit 91e4188 Sep 30, 2025
25 checks passed
@servo-highfive servo-highfive removed the S-awaiting-merge The PR is in the process of compiling and running tests on the automated CI. label Sep 30, 2025
@servo-wpt-sync
Copy link
Copy Markdown
Collaborator

⛔ Failed to properly merge the upstream pull request (web-platform-tests/wpt#55121). Please address any CI issues and try to merge manually.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-awaiting-review There is new code that needs to be reviewed. S-fails-tidy `./mach test-tidy` reported errors.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants