Skip to content

Reliable/reproducible error in a 'hello world' example using @codemirror/lang-html when typing the final character to close a <script> tag in certain situations. #1476

Closed
@josephrocca

Description

@josephrocca

Describe the issue

In the reproduction link below, try typing > at the end of the first line to close the script tag. In the browser console you should see this error:

Uncaught TypeError: Cannot read properties of undefined (reading 'to')
    at Parse.moveRangeIndex (@codemirror-language.js:2392:45)
    at new Parse (@codemirror-language.js:2329:14)
    at Parser.createParse (@codemirror-language.js:2206:24)
    at Parser.startParse (@lezer-common.js:1730:21)
    at MixedParse.startInner (@lezer-common.js:1891:97)
    at MixedParse.advance (@lezer-common.js:1810:18)
    at @codemirror-language.js:363:39
    at ParseContext.withContext (@codemirror-language.js:398:20)
    at ParseContext.work (@codemirror-language.js:351:21)
    at LanguageState.apply (@codemirror-language.js:537:20)

But notice that if you delete everything from the text editor except <script></script and then try typing the final >, then it works fine.

So I guess it has something to do with the transition of the 'content' of the script tag (i.e. everything after <script>) during the transition from it no longer being considered part of the script tag, since the script tag was (about to be) closed at a position before it in the document.

Thanks!

Browser and platform

Chrome, Ubuntu 22.04

Reproduction link

https://codemirror.net/try/?c=aW1wb3J0IHtiYXNpY1NldHVwLCBFZGl0b3JWaWV3fSBmcm9tICJjb2RlbWlycm9yIgppbXBvcnQge1N0cmVhbUxhbmd1YWdlfSBmcm9tICJAY29kZW1pcnJvci9sYW5ndWFnZSI7CmltcG9ydCB7amF2YXNjcmlwdH0gZnJvbSAiQGNvZGVtaXJyb3IvbGVnYWN5LW1vZGVzL21vZGUvamF2YXNjcmlwdCI7CmltcG9ydCB7aHRtbH0gZnJvbSAiQGNvZGVtaXJyb3IvbGFuZy1odG1sIjsKCmxldCBqYXZhc2NyaXB0U3RyZWFtTGFuZ3VhZ2UgPSBTdHJlYW1MYW5ndWFnZS5kZWZpbmUoamF2YXNjcmlwdCk7CmxldCBldmVudEF0dHJpYnV0ZU5hbWVzID0gWy4uLm5ldyBTZXQoWy4uLk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGRvY3VtZW50KSwgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihkb2N1bWVudCkpKSwgLi4uT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKHdpbmRvdykpXS5maWx0ZXIoayA9PiBrLnN0YXJ0c1dpdGgoIm9uIikgJiYgKGRvY3VtZW50W2tdID09IG51bGwgfHwgdHlwZW9mIGRvY3VtZW50W2tdID09ICJmdW5jdGlvbiIpKSldOwpsZXQgaHRtbExhbmd1YWdlRXh0ZW5zaW9uID0gaHRtbCh7CiAgbmVzdGVkTGFuZ3VhZ2VzOiBbe3RhZzoic2NyaXB0IiwgcGFyc2VyOmphdmFzY3JpcHRTdHJlYW1MYW5ndWFnZS5wYXJzZXJ9XSwKICBuZXN0ZWRBdHRyaWJ1dGVzOiBldmVudEF0dHJpYnV0ZU5hbWVzLm1hcChuID0+ICh7bmFtZTpuLCBwYXJzZXI6amF2YXNjcmlwdFN0cmVhbUxhbmd1YWdlLnBhcnNlcn0pKSwKfSk7CgpsZXQgdmlldyA9IG5ldyBFZGl0b3JWaWV3KHsKICBkb2M6ICdceDNDc2NyaXB0Plx4M0Mvc2NyaXB0XG4gIDxkaXY+XG4gICAgPGJ1dHRvbiBvbmNsaWNrPSIpIj48L2J1dHRvbj5cbiAgPC9kaXY+XG4gIFxuICA8ZGl2PlxuICAgIDxkaXY+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIG1pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO1xuICAgICAgICAgIG1pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO21pbi1oZWlnaHQ6MC41cmVtOyB3aWR0aDoxMDAlOyBib3R0b206MDttaW4taGVpZ2h0OjAuNXJlbTsgd2lkdGg6MTAwJTsgYm90dG9tOjA7bWluLWhlaWdodDowLjVyZW07IHdpZHRoOjEwMCU7IGJvdHRvbTowO1xuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFx4M0NzY3JpcHQ+XG4gICAgICBhKCk7XG4gICAgXHgzQy9zY3JpcHQ+XG4gICAgJywKICBleHRlbnNpb25zOiBbCiAgICBiYXNpY1NldHVwLAogICAgaHRtbExhbmd1YWdlRXh0ZW5zaW9uLAogIF0sCiAgcGFyZW50OiBkb2N1bWVudC5ib2R5LAp9KTsK

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions