ref: 52236c7b9e5341744a6f4df3d47db9a07145bbaa
parent: c6da3d74a2572ee993ee4734e8650c75079e0197
author: Ori Bernstein <ori@eigenstate.org>
date: Thu Jan 9 06:59:44 EST 2020
show line numbers in dtracy type errors
--- a/sys/src/cmd/dtracy/act.c
+++ b/sys/src/cmd/dtracy/act.c
@@ -192,7 +192,8 @@
goto again;
case 'x': case 'X': case 'o': case 'b': case 'd':
if(n >= narg) sysfatal("printf() too few arguments");- if(arg[n]->typ->type != TYPINT) sysfatal("print() %%%c with non-integer", *fmt);+ if(arg[n]->typ->type != TYPINT)
+ sysfatal("%d: print() %%%c with non-integer", arg[n]->line, *fmt);arg[n] = tracegen(arg[n], g, recoff);
n++;
fmtrune(&f, 'l');
@@ -201,7 +202,8 @@
break;
case 's':
if(n >= narg) sysfatal("printf() too few arguments");- if(arg[n]->typ->type != TYPSTRING) sysfatal("print() %%s with non-string");+ if(arg[n]->typ->type != TYPSTRING)
+ sysfatal("%d: print() %%s with non-string", arg[n]->line);arg[n] = tracegen(arg[n], g, recoff);
n++;
fmtrune(&f, *fmt);
--- a/sys/src/cmd/dtracy/dat.h
+++ b/sys/src/cmd/dtracy/dat.h
@@ -75,6 +75,7 @@
Symbol *sym;
char *str;
s64int num;
+ int line;
/* used by elidecasts() */
char databits;
--- a/sys/src/cmd/dtracy/lex.c
+++ b/sys/src/cmd/dtracy/lex.c
@@ -239,6 +239,7 @@
n = emalloc(sizeof(Node));
n->type = type;
+ n->line = lineno;
va_start(va, type);
switch(type){case OBIN:
--
⑨