Skip to content

Commit 1a2626b

Browse files
mamekddnewton
authored andcommitted
Set `#line" directives to respect the path in ruby/ruby repo
ruby/ruby measures test coverage of C code, but the `#line` directive generated by prism points to a file that does not exist, so coverage is not taken properly. This changeset specifies the location of the source files as a relative path in terms of ruby/ruby repo.
1 parent 0020da0 commit 1a2626b

File tree

3 files changed

+19
-19
lines changed

3 files changed

+19
-19
lines changed

templates/ext/prism/api_node.c.erb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
1+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
22
#include "prism/extension.h"
33

44
extern VALUE rb_cPrism;
@@ -142,7 +142,7 @@ pm_ast_new(const pm_parser_t *parser, const pm_node_t *node, rb_encoding *encodi
142142
switch (PM_NODE_TYPE(node)) {
143143
<%- nodes.each do |node| -%>
144144
<%- if node.fields.any? { |field| [Prism::Template::NodeField, Prism::Template::OptionalNodeField, Prism::Template::NodeListField].include?(field.class) } -%>
145-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
145+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
146146
case <%= node.type %>: {
147147
pm_<%= node.human %>_t *cast = (pm_<%= node.human %>_t *) node;
148148
<%- node.fields.each do |field| -%>
@@ -162,13 +162,13 @@ pm_ast_new(const pm_parser_t *parser, const pm_node_t *node, rb_encoding *encodi
162162
default:
163163
break;
164164
}
165-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
165+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
166166
} else {
167167
const pm_node_t *node = pm_node_stack_pop(&node_stack);
168168

169169
switch (PM_NODE_TYPE(node)) {
170170
<%- nodes.each do |node| -%>
171-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
171+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
172172
case <%= node.type %>: {
173173
<%- if node.fields.any? { |field| ![Prism::Template::NodeField, Prism::Template::OptionalNodeField, Prism::Template::FlagsField].include?(field.class) } -%>
174174
pm_<%= node.human %>_t *cast = (pm_<%= node.human %>_t *) node;
@@ -182,50 +182,50 @@ pm_ast_new(const pm_parser_t *parser, const pm_node_t *node, rb_encoding *encodi
182182
// <%= field.name %>
183183
<%- case field -%>
184184
<%- when Prism::Template::NodeField, Prism::Template::OptionalNodeField -%>
185-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
185+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
186186
argv[<%= index %>] = rb_ary_pop(value_stack);
187187
<%- when Prism::Template::NodeListField -%>
188-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
188+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
189189
argv[<%= index %>] = rb_ary_new_capa(cast-><%= field.name %>.size);
190190
for (size_t index = 0; index < cast-><%= field.name %>.size; index++) {
191191
rb_ary_push(argv[<%= index %>], rb_ary_pop(value_stack));
192192
}
193193
<%- when Prism::Template::StringField -%>
194-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
194+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
195195
argv[<%= index %>] = pm_string_new(&cast-><%= field.name %>, encoding);
196196
<%- when Prism::Template::ConstantField -%>
197-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
197+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
198198
assert(cast-><%= field.name %> != 0);
199199
argv[<%= index %>] = RARRAY_AREF(constants, cast-><%= field.name %> - 1);
200200
<%- when Prism::Template::OptionalConstantField -%>
201201
argv[<%= index %>] = cast-><%= field.name %> == 0 ? Qnil : RARRAY_AREF(constants, cast-><%= field.name %> - 1);
202202
<%- when Prism::Template::ConstantListField -%>
203-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
203+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
204204
argv[<%= index %>] = rb_ary_new_capa(cast-><%= field.name %>.size);
205205
for (size_t index = 0; index < cast-><%= field.name %>.size; index++) {
206206
assert(cast-><%= field.name %>.ids[index] != 0);
207207
rb_ary_push(argv[<%= index %>], RARRAY_AREF(constants, cast-><%= field.name %>.ids[index] - 1));
208208
}
209209
<%- when Prism::Template::LocationField -%>
210-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
210+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
211211
argv[<%= index %>] = pm_location_new(parser, cast-><%= field.name %>.start, cast-><%= field.name %>.end);
212212
<%- when Prism::Template::OptionalLocationField -%>
213-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
213+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
214214
argv[<%= index %>] = cast-><%= field.name %>.start == NULL ? Qnil : pm_location_new(parser, cast-><%= field.name %>.start, cast-><%= field.name %>.end);
215215
<%- when Prism::Template::UInt8Field -%>
216-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
216+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
217217
argv[<%= index %>] = UINT2NUM(cast-><%= field.name %>);
218218
<%- when Prism::Template::UInt32Field -%>
219-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
219+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
220220
argv[<%= index %>] = ULONG2NUM(cast-><%= field.name %>);
221221
<%- when Prism::Template::FlagsField -%>
222-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
222+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
223223
argv[<%= index %>] = ULONG2NUM(node->flags & ~PM_NODE_FLAG_COMMON_MASK);
224224
<%- when Prism::Template::IntegerField -%>
225-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
225+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
226226
argv[<%= index %>] = pm_integer_new(&cast-><%= field.name %>);
227227
<%- when Prism::Template::DoubleField -%>
228-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
228+
#line <%= __LINE__ + 1 %> "prism/templates/ext/prism/<%= File.basename(__FILE__) %>"
229229
argv[<%= index %>] = DBL2NUM(cast-><%= field.name %>);
230230
<%- else -%>
231231
<%- raise -%>

templates/src/node.c.erb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ PRISM_EXPORTED_FUNCTION void
106106
pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
107107
switch (PM_NODE_TYPE(node)) {
108108
<%- nodes.each do |node| -%>
109-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
109+
#line <%= __LINE__ + 1 %> "prism/templates/src/<%= File.basename(__FILE__) %>"
110110
case <%= node.type %>: {
111111
<%- if node.fields.any? { |field| ![Prism::Template::LocationField, Prism::Template::OptionalLocationField, Prism::Template::UInt8Field, Prism::Template::UInt32Field, Prism::Template::FlagsField, Prism::Template::ConstantField, Prism::Template::OptionalConstantField, Prism::Template::DoubleField].include?(field.class) } -%>
112112
pm_<%= node.human %>_t *cast = (pm_<%= node.human %>_t *) node;
@@ -135,7 +135,7 @@ pm_node_destroy(pm_parser_t *parser, pm_node_t *node) {
135135
break;
136136
}
137137
<%- end -%>
138-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
138+
#line <%= __LINE__ + 1 %> "prism/templates/src/<%= File.basename(__FILE__) %>"
139139
default:
140140
assert(false && "unreachable");
141141
break;

templates/src/serialize.c.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ pm_serialize_metadata(pm_parser_t *parser, pm_buffer_t *buffer) {
267267
pm_serialize_diagnostic_list(parser, &parser->warning_list, buffer);
268268
}
269269

270-
#line <%= __LINE__ + 1 %> "<%= File.basename(__FILE__) %>"
270+
#line <%= __LINE__ + 1 %> "prism/templates/src/<%= File.basename(__FILE__) %>"
271271
/**
272272
* Serialize the metadata, nodes, and constant pool.
273273
*/

0 commit comments

Comments
 (0)