Skip to content

Commit 42babd1

Browse files
committed
Adding missing line number to error conditions
(so type checker can print better error messages)
1 parent 89667ab commit 42babd1

File tree

2 files changed

+15
-14
lines changed

2 files changed

+15
-14
lines changed

node.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,7 @@ class NVariableDeclaration : public NStatement {
192192
visitor.visit(this, V_FLAG_NONE); // Must declare the variable before assign
193193
if (assignmentExpr != NULL) {
194194
NAssignment assign(id, *assignmentExpr);
195+
assign.lineno = lineno;
195196
assign.accept(visitor);
196197
}
197198
};

parser.y

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -93,31 +93,31 @@ sec : T_SEC { $$ = new NSecurity(*$1); delete $1; $$->lineno = yylineno; }
9393

9494
expr : ident TEQUAL expr TSC { $$ = new NAssignment(*$<ident>1, *$3); $$->lineno = yylineno; }
9595
| TSKIP TSC { $$ = new NSkip(); $$->lineno = yylineno; }
96-
| ident { $<ident>$ = $1; }
96+
| ident { $<ident>$ = $1; $$->lineno = yylineno; }
9797
| TIF expr TLBRACE block TRBRACE TELSE TLBRACE block TRBRACE { $$ = new NIfExpression(*$2, *$4, *$8); }
9898
| TWHILE expr TLBRACE block TRBRACE { $$ = new NWhileExpression(*$2, *$4); }
9999
| numeric
100100
| boolean
101101
| expr TPLUS expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
102-
| expr TMINUS expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
103-
| expr TMUL expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
104-
| expr TDIV expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
105-
| expr TCEQ expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
106-
| expr TCNE expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
107-
| expr TCLT expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
108-
| expr TCLE expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
109-
| expr TCGT expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
110-
| expr TCGE expr { $$ = new NBinaryOperator(*$1, $2, *$3); }
102+
| expr TMINUS expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
103+
| expr TMUL expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
104+
| expr TDIV expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
105+
| expr TCEQ expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
106+
| expr TCNE expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
107+
| expr TCLT expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
108+
| expr TCLE expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
109+
| expr TCGT expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
110+
| expr TCGE expr { $$ = new NBinaryOperator(*$1, $2, *$3); $$->lineno = yylineno; }
111111
| TLPAREN expr TRPAREN { $$ = $2; }
112112
;
113113

114-
ident : T_IDENTIFIER { $$ = new NIdentifier(*$1); delete $1; }
114+
ident : T_IDENTIFIER { $$ = new NIdentifier(*$1); delete $1; $$->lineno = yylineno; }
115115
;
116116

117-
numeric : T_VAL_INTEGER { $$ = new NInteger(atol($1->c_str())); delete $1; }
118-
| T_VAL_DOUBLE { $$ = new NDouble(atof($1->c_str())); delete $1; }
117+
numeric : T_VAL_INTEGER { $$ = new NInteger(atol($1->c_str())); delete $1; $$->lineno = yylineno; }
118+
| T_VAL_DOUBLE { $$ = new NDouble(atof($1->c_str())); delete $1; $$->lineno = yylineno; }
119119
;
120120

121-
boolean : T_VAL_BOOL { $$ = new NBool($1->c_str()); delete $1; }
121+
boolean : T_VAL_BOOL { $$ = new NBool($1->c_str()); delete $1; $$->lineno = yylineno; }
122122
;
123123
%%

0 commit comments

Comments
 (0)