Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot easily merge multiple queries #3588

Open
gsnedders opened this issue Nov 4, 2023 · 1 comment
Open

Cannot easily merge multiple queries #3588

gsnedders opened this issue Nov 4, 2023 · 1 comment

Comments

@gsnedders
Copy link
Member

gsnedders commented Nov 4, 2023

Given a number of different search queries on wpt.fyi, you might think you could merge them with something like:

const merged = queries.map((q) => `exists(${q})`).join(" or ");

However, this doesn't actually work in some cases:

Using the same example as in #3587:

path:/css/css-display and exists(display contents)

is valid, but:

exists(path:/css/css-display and exists(display contents))

is invalid.

It's unclear to me why this doesn't parse, and Ohm doesn't give helpful error messages.

Trying to look through the parser, it may be that we don't allow nested exists?

@gsnedders
Copy link
Member Author

In fact we sometimes seem to parse nested exists… in very unexpected ways!

The (horrible!) query: exists(path:/css/css-contain/container-queries and exists(path:/css/css-contain/container-queries/at-container-style-parsing.html or path:/css/css-contain/container-queries/at-container-style-serialization.html or path:/css/css-contain/container-queries/custom-property-style-queries.html or path:/css/css-contain/container-queries/custom-property-style-query-change.html or path:/css/css-contain/container-queries/display-contents-dynamic-style-queries.html or path:/css/css-contain/container-queries/nested-size-style-container-invalidation.html or path:/css/css-contain/container-queries/query-evaluation-style.html or path:/css/css-contain/container-queries/style-container-invalidation-inheritance.html or path:/css/css-contain/container-queries/style-container-for-shadow-dom.html or path:/css/css-contain/container-queries/style-query-with-unknown-width.html))

Parses as:

{
    "run_ids": [
        5130502731726848,
        5127139076079616,
        5170202456621056,
        5079107785719808
    ],
    "query": {
        "exists": [
            {
                "and": [
                    {
                        "path": "/css/css-contain/container-queries"
                    },
                    {
                        "pattern": "exists"
                    }
                ]
            },
            {
                "or": [
                    {
                        "path": "/css/css-contain/container-queries/at-container-style-parsing.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/at-container-style-serialization.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/custom-property-style-queries.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/custom-property-style-query-change.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/display-contents-dynamic-style-queries.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/nested-size-style-container-invalidation.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/query-evaluation-style.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/style-container-invalidation-inheritance.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/style-container-for-shadow-dom.html"
                    },
                    {
                        "path": "/css/css-contain/container-queries/style-query-with-unknown-width.html"
                    }
                ]
            }
        ]
    }
}

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

No branches or pull requests

1 participant