Skip to content

Commit 2b047c0

Browse files
authored
CSS: Update to compile with 0.16 or later (#149)
1 parent da8b118 commit 2b047c0

3 files changed

Lines changed: 32 additions & 31 deletions

File tree

src/css/Ast.zig

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const Ast = @This();
22

33
const std = @import("std");
4-
const Writer = std.Io.Writer();
4+
const Writer = std.Io.Writer;
55
const Tokenizer = @import("Tokenizer.zig");
66
const root = @import("../root.zig");
77
const Span = root.Span;
@@ -47,7 +47,7 @@ pub const Rule = struct {
4747
ast: Ast,
4848
src: []const u8,
4949
w: *Writer,
50-
) !void {
50+
) Writer.Error!void {
5151
if (self.element_name) |element_name| {
5252
switch (element_name) {
5353
.name => |name| _ = try w.write(name.slice(src)),
@@ -100,7 +100,7 @@ pub const Rule = struct {
100100
src: []const u8,
101101
w: *Writer,
102102
depth: usize,
103-
) !void {
103+
) Writer.Error!void {
104104
for (0..depth) |_| _ = try w.write(" ");
105105
for (ast.selectors[style.selectors.start..style.selectors.end], 0..) |selector, i| {
106106
if (i != 0) {
@@ -187,7 +187,7 @@ pub const Rule = struct {
187187
src: []const u8,
188188
w: *Writer,
189189
depth: usize,
190-
) !void {
190+
) Writer.Error!void {
191191
for (0..depth) |_| _ = try w.write(" ");
192192

193193
_ = try w.write("@media ");
@@ -231,7 +231,7 @@ pub const Rule = struct {
231231
src: []const u8,
232232
w: *Writer,
233233
depth: usize,
234-
) anyerror!void {
234+
) Writer.Error!void {
235235
switch (rule.type) {
236236
.style => |style| try style.render(ast, src, w, depth),
237237
.media => |media| try media.render(ast, src, w, depth),
@@ -267,12 +267,12 @@ const State = struct {
267267
tokenizer: Tokenizer,
268268
src: []const u8,
269269
reconsumed: ?Tokenizer.Token,
270-
errors: std.ArrayListUnmanaged(Error),
271-
rules: std.ArrayListUnmanaged(Rule),
272-
selectors: std.ArrayListUnmanaged(Rule.Style.Selector),
273-
declarations: std.ArrayListUnmanaged(Rule.Style.Declaration),
274-
specifiers: std.ArrayListUnmanaged(Rule.Style.Selector.Simple.Specifier),
275-
media_queries: std.ArrayListUnmanaged(Span),
270+
errors: std.ArrayList(Error),
271+
rules: std.ArrayList(Rule),
272+
selectors: std.ArrayList(Rule.Style.Selector),
273+
declarations: std.ArrayList(Rule.Style.Declaration),
274+
specifiers: std.ArrayList(Rule.Style.Selector.Simple.Specifier),
275+
media_queries: std.ArrayList(Span),
276276

277277
fn consume(self: *State) error{OutOfMemory}!?Tokenizer.Token {
278278
if (self.reconsumed) |tok| {
@@ -311,8 +311,8 @@ const Formatter = struct {
311311
ast: Ast,
312312
src: []const u8,
313313

314-
pub fn format(f: Formatter, w: *Writer) !void {
315-
try f.ast.render(f.src, w);
314+
pub fn format(f: Formatter, w: *Writer) Writer.Error!void {
315+
return f.ast.render(f.src, w);
316316
}
317317
};
318318

@@ -323,7 +323,7 @@ pub fn formatter(self: Ast, src: []const u8) Formatter {
323323
};
324324
}
325325

326-
pub fn render(ast: Ast, src: []const u8, w: *Writer) !void {
326+
pub fn render(ast: Ast, src: []const u8, w: *Writer) Writer.Error!void {
327327
var first = true;
328328
var rule = ast.rules[ast.first_rule orelse return];
329329
while (true) {
@@ -364,12 +364,12 @@ pub fn init(allocator: std.mem.Allocator, src: []const u8) error{OutOfMemory}!As
364364
.tokenizer = .{},
365365
.src = src,
366366
.reconsumed = null,
367-
.errors = .{},
368-
.rules = .{},
369-
.selectors = .{},
370-
.declarations = .{},
371-
.specifiers = .{},
372-
.media_queries = .{},
367+
.errors = .empty,
368+
.rules = .empty,
369+
.selectors = .empty,
370+
.declarations = .empty,
371+
.specifiers = .empty,
372+
.media_queries = .empty,
373373
};
374374

375375
const first_rule = try parseRules(&state);
@@ -410,7 +410,7 @@ fn parseRules(s: *State) error{OutOfMemory}!?u32 {
410410
if (std.ascii.eqlIgnoreCase(name, at_rule.name)) {
411411
s.reconsume(token);
412412

413-
const rule = .{
413+
const rule = Rule{
414414
.type = @unionInit(
415415
@TypeOf(@as(Rule, undefined).type),
416416
at_rule.name,
@@ -469,7 +469,7 @@ fn parseRules(s: *State) error{OutOfMemory}!?u32 {
469469
else => {
470470
s.reconsume(token);
471471

472-
const rule = .{
472+
const rule = Rule{
473473
.type = .{
474474
.style = try parseStyleRule(s),
475475
},
@@ -803,15 +803,15 @@ test "simple stylesheet" {
803803
defer ast.deinit(std.testing.allocator);
804804

805805
try std.testing.expect(ast.errors.len == 0);
806-
try std.testing.expectFmt(expected, "{s}", .{ast.formatter(src)});
806+
try std.testing.expectFmt(expected, "{f}", .{ast.formatter(src)});
807807
}
808808

809809
test "empty" {
810810
const ast = try Ast.init(std.testing.allocator, "");
811811
defer ast.deinit(std.testing.allocator);
812812

813813
try std.testing.expect(ast.errors.len == 0);
814-
try std.testing.expectFmt("", "{s}", .{ast.formatter("")});
814+
try std.testing.expectFmt("", "{f}", .{ast.formatter("")});
815815
}
816816

817817
test "full example" {
@@ -834,7 +834,7 @@ test "full example" {
834834
defer ast.deinit(std.testing.allocator);
835835

836836
try std.testing.expect(ast.errors.len == 0);
837-
try std.testing.expectFmt(src, "{s}", .{ast.formatter(src)});
837+
try std.testing.expectFmt(src, "{f}", .{ast.formatter(src)});
838838
}
839839

840840
test "example.org" {
@@ -872,7 +872,7 @@ test "example.org" {
872872
defer ast.deinit(std.testing.allocator);
873873

874874
try std.testing.expect(ast.errors.len == 0);
875-
try std.testing.expectFmt(src, "{s}", .{ast.formatter(src)});
875+
try std.testing.expectFmt(src, "{f}", .{ast.formatter(src)});
876876
}
877877

878878
test "minimized example.org" {
@@ -913,7 +913,7 @@ test "minimized example.org" {
913913
defer ast.deinit(std.testing.allocator);
914914

915915
try std.testing.expect(ast.errors.len == 0);
916-
try std.testing.expectFmt(expected, "{s}", .{ast.formatter(src)});
916+
try std.testing.expectFmt(expected, "{f}", .{ast.formatter(src)});
917917
}
918918

919919
test "media queries" {
@@ -941,7 +941,7 @@ test "media queries" {
941941
defer ast.deinit(std.testing.allocator);
942942

943943
try std.testing.expect(ast.errors.len == 0);
944-
try std.testing.expectFmt(src, "{s}", .{ast.formatter(src)});
944+
try std.testing.expectFmt(src, "{f}", .{ast.formatter(src)});
945945
}
946946

947947
test "invalid at rule" {
@@ -989,7 +989,7 @@ test "pseudo-classes and pseudo-elements" {
989989
defer ast.deinit(std.testing.allocator);
990990

991991
try std.testing.expect(ast.errors.len == 0);
992-
try std.testing.expectFmt(src, "{s}", .{ast.formatter(src)});
992+
try std.testing.expectFmt(src, "{f}", .{ast.formatter(src)});
993993
}
994994

995995
test "truncated string" {
@@ -1024,5 +1024,5 @@ test "number literals" {
10241024
defer ast.deinit(std.testing.allocator);
10251025

10261026
try std.testing.expect(ast.errors.len == 0);
1027-
try std.testing.expectFmt(src, "{s}", .{ast.formatter(src)});
1027+
try std.testing.expectFmt(src, "{f}", .{ast.formatter(src)});
10281028
}

src/css/Tokenizer.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ pub fn next(self: *Tokenizer, src: []const u8) ?Token {
199199
'"', '\'' => return self.string(src),
200200
'#' => {
201201
if (self.peek(src) != null and isIdentChar(self.peek(src).?)) {
202-
var token = .{ .hash = self.identSequence(src) };
202+
var token = Token{ .hash = self.identSequence(src) };
203203
token.hash.start -= 1;
204204
return token;
205205
} else {

src/root.zig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,5 @@ test {
179179
// _ = @import("template.zig");
180180
_ = @import("fuzz.zig");
181181
_ = @import("example.zig");
182+
_ = @import("css.zig");
182183
}

0 commit comments

Comments
 (0)