Compare commits

...

1 Commits

Author SHA1 Message Date
Jarred Sumner
a8e31ae5e4 test: ensure layer statements trimmed 2025-06-22 15:51:38 -07:00
2 changed files with 42 additions and 1 deletions

View File

@@ -159,7 +159,7 @@ fn prepareCssAstsForChunkImpl(c: *LinkerContext, chunk: *Chunk, allocator: std.m
// TODO: we are doing simple version rn, only @import
for (ast.rules.v.items, 0..) |*rule, ruleidx| {
// if ((rule.* == .import and import_records[source_index.get()].at(rule.import.import_record_idx).is_internal) or rule.* == .ignored) {} else {
if (rule.* == .import or rule.* == .ignored) {} else {
if (rule.* == .import or rule.* == .layer_statement or rule.* == .ignored) {} else {
// It's okay to do this because AST is allocated into arena
const reslice = ast.rules.v.items[ruleidx..];
ast.rules.v = .{

View File

@@ -177,6 +177,47 @@ describe("bundler", () => {
},
});
itBundled("css/CSSTrimLeadingLayerStatements", {
files: {
"/main.css": /* css */ `
@layer one;
@layer two;
@layer three;
@import url("./a.css") layer(one);
@import url("./b.css") layer(two);
@import url("./c.css") layer(three);
`,
"/a.css": `body { margin: 0; }`,
"/b.css": `h1 { font-family: sans-serif; }`,
"/c.css": `.text-centered { text-align: center; }`,
},
outfile: "/out.css",
onAfterBundle(api) {
api.expectFile("/out.css").toEqualIgnoringWhitespace(`
/* a.css */
@layer one {
body {
margin: 0;
}
}
/* b.css */
@layer two {
h1 {
font-family: sans-serif;
}
}
/* c.css */
@layer three {
.text-centered {
text-align: center;
}
}
/* main.css */
`);
},
});
// TODO: re-enable these tests when we do minify local css identifiers
// itBundled("css/TestImportLocalCSSFromJSMinifyIdentifiersAvoidGlobalNames", {
// files: {