From 2dbb764cfc775e5b1fb5ac907e9a56d2d6e2b23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 31 Jul 2024 20:22:52 +0900 Subject: [PATCH 1/3] Add a test for https://github.com/vercel/next.js/issues/66191 --- tests/cli_integration_tests.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/cli_integration_tests.rs b/tests/cli_integration_tests.rs index 744ac7ca..28dcda0e 100644 --- a/tests/cli_integration_tests.rs +++ b/tests/cli_integration_tests.rs @@ -759,3 +759,26 @@ fn browserslist_environment_from_browserslist_env() -> Result<(), Box Result<(), Box> { + let infile = assert_fs::NamedTempFile::new("test.css")?; + infile.write_str( + r#" + .cb:is(input:checked) { + margin: 3rem; + } + "#, + )?; + let outfile = assert_fs::NamedTempFile::new("test.out")?; + let mut cmd = Command::cargo_bin("lightningcss")?; + cmd.arg(infile.path()); + cmd.arg("--output-file").arg(outfile.path()); + cmd.assert().success(); + outfile.assert(predicate::str::contains(indoc! {r#" + .cb:is(input:checked) { + margin: 3rem; + }"#})); + + Ok(()) +} From b1e60ceb0d71b9d927478b6ea28afa4b1c8aef78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 31 Jul 2024 20:50:16 +0900 Subject: [PATCH 2/3] Update test --- tests/cli_integration_tests.rs | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/cli_integration_tests.rs b/tests/cli_integration_tests.rs index 28dcda0e..c57d26e8 100644 --- a/tests/cli_integration_tests.rs +++ b/tests/cli_integration_tests.rs @@ -775,10 +775,7 @@ fn next_66191() -> Result<(), Box> { cmd.arg(infile.path()); cmd.arg("--output-file").arg(outfile.path()); cmd.assert().success(); - outfile.assert(predicate::str::contains(indoc! {r#" - .cb:is(input:checked) { - margin: 3rem; - }"#})); + outfile.assert(predicate::str::contains(indoc! {r#".cb:is(input:checked)"#})); Ok(()) } From 31a7d46a649acacafb115e6853f5752897fd0f93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B0=95=EB=8F=99=EC=9C=A4=20=28Donny=29?= Date: Wed, 31 Jul 2024 20:50:24 +0900 Subject: [PATCH 3/3] fix --- src/selector.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/selector.rs b/src/selector.rs index 62550198..56df04c8 100644 --- a/src/selector.rs +++ b/src/selector.rs @@ -1624,8 +1624,13 @@ where #[inline] fn has_type_selector(selector: &Selector) -> bool { - let mut iter = selector.iter_raw_parse_order_from(0); + // For input:checked the component vector is + // [input, :checked] so we have to check it using matching order. + // + // This both happens for input:checked and is(input:checked) + let mut iter = selector.iter_raw_match_order(); let first = iter.next(); + if is_namespace(first) { is_type_selector(iter.next()) } else {