Skip to content

Commit 35b71a7

Browse files
committed
Fix an issue of compile errors by Clang
1 parent 7b4aa25 commit 35b71a7

File tree

5 files changed

+29
-14
lines changed

5 files changed

+29
-14
lines changed

examples/calc.peg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ _ <- [ \t]*
4343
EOL <- '\n' / '\r\n' / '\r' / ';'
4444

4545
%%
46-
int main() {
46+
int main(int argc, char **argv) {
4747
calc_context_t *ctx = calc_create(NULL);
4848
while (calc_parse(ctx, NULL));
4949
calc_destroy(ctx);

src/packcc.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3228,13 +3228,24 @@ static code_reach_t generate_quantifying_code(generate_t *gen, const node_t *exp
32283228
stream__write_characters(gen->stream, ' ', indent);
32293229
stream__puts(gen->stream, "const size_t n0 = chunk->thunks.len;\n");
32303230
}
3231-
stream__write_characters(gen->stream, ' ', indent);
3232-
stream__puts(gen->stream, "int i;\n");
3233-
stream__write_characters(gen->stream, ' ', indent);
3234-
if (max < 0)
3235-
stream__puts(gen->stream, "for (i = 0;; i++) {\n");
3236-
else
3231+
if (max < 0) {
3232+
if (min > 0) {
3233+
stream__write_characters(gen->stream, ' ', indent);
3234+
stream__puts(gen->stream, "int i;\n");
3235+
stream__write_characters(gen->stream, ' ', indent);
3236+
stream__puts(gen->stream, "for (i = 0;; i++) {\n");
3237+
}
3238+
else {
3239+
stream__write_characters(gen->stream, ' ', indent);
3240+
stream__puts(gen->stream, "for (;;) {\n");
3241+
}
3242+
}
3243+
else {
3244+
stream__write_characters(gen->stream, ' ', indent);
3245+
stream__puts(gen->stream, "int i;\n");
3246+
stream__write_characters(gen->stream, ' ', indent);
32373247
stream__printf(gen->stream, "for (i = 0; i < %d; i++) {\n", max);
3248+
}
32383249
stream__write_characters(gen->stream, ' ', indent + 4);
32393250
stream__puts(gen->stream, "const size_t p = ctx->cur;\n");
32403251
stream__write_characters(gen->stream, ' ', indent + 4);

tests/code_generation.d/generation.bats

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,7 @@ load "$TESTDIR/utils.sh"
77
}
88

99
@test "Testing code_generation.d - compilation" {
10-
test_compile \
11-
-D pcc_create=my_create \
12-
-D pcc_destroy=my_destroy \
13-
-D pcc_parse=my_parse \
14-
-D pcc_context_t=my_context_t \
15-
-D RET_TYPE=double
10+
${CC:-cc} -I "$BATS_TEST_DIRNAME" "$BATS_TEST_DIRNAME/parser.c" "$BATS_TEST_DIRNAME/main.c" -o "$BATS_TEST_DIRNAME/parser" "$@"
1611
}
1712

1813
@test "Testing code_generation.d - earlyheader" {

tests/code_generation.d/input.peg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
%header { /* HEADER ONLY */ }
22

33
%source {
4-
int custom_function() {
4+
int custom_function(void) {
55
return 42;
66
}
77
}

tests/code_generation.d/main.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#include "parser.h"
2+
3+
int main(int argc, char **argv) {
4+
double ret;
5+
my_context_t *ctx = my_create(0);
6+
while (my_parse(ctx, &ret));
7+
my_destroy(ctx);
8+
return 0;
9+
}

0 commit comments

Comments
 (0)