Skip to content

Token bufferisation for verbatim content #2263

Description

@k0tran

Hi!

I've encountered weird bug while running lychee tests on riscv64 and wonder if it's known. The root cause of this bug is inside lychee-lib/src/extract/html/html5ever.rs. It is difference in Token::CharacterTokens(raw) value inside verbatim.

On x86_64 it tokenizes like this:

TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "    ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(shared: "This is a paragraph with some inline ")
TOKEN raw=Tendril<UTF8>(shared: "https://example.com")
TOKEN raw=Tendril<UTF8>(shared: " and a normal ")
TOKEN raw=Tendril<UTF8>(inline: "example")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(shared: "        Some random text\n        https://foo.com and http://bar.com/some/path\n        Something else\n        ")
TOKEN raw=Tendril<UTF8>(shared: "example link inside pre")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "bold")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "    ")
TOKEN raw=Tendril<UTF8>(inline: "\n")

However on riscv64:

TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "    ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(shared: "This is a paragraph with some inline ")
TOKEN raw=Tendril<UTF8>(shared: "https://example.com")
TOKEN raw=Tendril<UTF8>(shared: " and a normal ")
TOKEN raw=Tendril<UTF8>(inline: "example")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(shared: "        Some random text")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(shared: "        https://foo.com and http://bar.com/some/path")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(shared: "        Something else")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(shared: "example link inside pre")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "        ")
TOKEN raw=Tendril<UTF8>(inline: "bold")
TOKEN raw=Tendril<UTF8>(inline: "\n")
TOKEN raw=Tendril<UTF8>(inline: "    ")
TOKEN raw=Tendril<UTF8>(inline: "\n")

Notice how "Some random text" and foo/bar links tokenized differently.

I've also noticed that inside style tag content accumulate but that is not the case for verbatim content it seems. Is it a bug?

Activity

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

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