diff options
| author | s-ol <s+removethis@s-ol.nu> | 2021-11-11 11:11:58 +0000 |
|---|---|---|
| committer | s-ol <s+removethis@s-ol.nu> | 2021-11-11 11:11:58 +0000 |
| commit | f78b0c2825d456d3f083b43e9192893cf1429f6a (patch) | |
| tree | 1660c15861b183ed6fff9ee4c0c0ef19ffdf31bd /src | |
| parent | better error messages (diff) | |
| download | glsl-view-f78b0c2825d456d3f083b43e9192893cf1429f6a.tar.gz glsl-view-f78b0c2825d456d3f083b43e9192893cf1429f6a.zip | |
better pragma error messages
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.zig | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/main.zig b/src/main.zig index 47e72f8..cf85732 100644 --- a/src/main.zig +++ b/src/main.zig @@ -104,7 +104,7 @@ pub fn main() !void { const shader_file = try fs.cwd().openFile(config.fragment, .{}); var last_stat = try shader_file.stat(); - try reloadShader(&main_program, shader_file, config.fragment, last_stat.size); + try reloadShader(&main_program, config.fragment, last_stat.size); var cache = gl.UniformCache.init(std.heap.c_allocator, &main_program); defer cache.deinit(); @@ -167,8 +167,11 @@ fn loadFile(writer: anytype, dir: []const u8, filename: []const u8) !void { defer file.close(); var reader = file.reader(); + var line_number: u32 = 0; var buf: [1024]u8 = undefined; while (try reader.readUntilDelimiterOrEof(&buf, '\n')) |line| { + line_number += 1; + if (std.mem.startsWith(u8, line, "#pragma ")) { var parts = std.mem.split(line, " "); _ = parts.next(); @@ -177,7 +180,8 @@ fn loadFile(writer: anytype, dir: []const u8, filename: []const u8) !void { if (std.mem.eql(u8, pragma, "include")) { var include_path = parts.next().?; if (include_path[0] != '"' or include_path[include_path.len - 1] != '"') { - std.debug.warn("Invalid #pragma directive '{}'\n", .{line}); + std.debug.warn("{}:{}: Invalid #pragma include\n", .{file_path, line_number}); + std.debug.warn("{}:{}: {}\n", .{line}); continue; } include_path = include_path[1 .. include_path.len - 1]; @@ -186,7 +190,8 @@ fn loadFile(writer: anytype, dir: []const u8, filename: []const u8) !void { continue; } else { - std.debug.warn("Unknown #pragma directive '{}'\n", .{pragma}); + std.debug.warn("{}:{}: Unknown #pragma directive '{}'\n", .{file_path, line_number, pragma}); + std.debug.warn("{}:{}: {}\n", .{line}); } } @@ -195,9 +200,8 @@ fn loadFile(writer: anytype, dir: []const u8, filename: []const u8) !void { } } -fn reloadShader(current: *gl.ShaderProgram, frag_file: fs.File, frag_filename: []const u8, size: u64) !void { +fn reloadShader(current: *gl.ShaderProgram, frag_filename: []const u8, size: u64) !void { var buffer = try std.ArrayList(u8).initCapacity(c_allocator, @intCast(usize, size)); - var writer = buffer.writer(); errdefer buffer.deinit(); try loadFile(buffer.writer(), "", frag_filename); |
