Skip to content

Commit

Permalink
Fix an issue of compile errors by Clang
Browse files Browse the repository at this point in the history
  • Loading branch information
arithy committed Apr 20, 2024
1 parent 7b4aa25 commit 35b71a7
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 14 deletions.
2 changes: 1 addition & 1 deletion examples/calc.peg
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ _ <- [ \t]*
EOL <- '\n' / '\r\n' / '\r' / ';'

%%
int main() {
int main(int argc, char **argv) {
calc_context_t *ctx = calc_create(NULL);
while (calc_parse(ctx, NULL));
calc_destroy(ctx);
Expand Down
23 changes: 17 additions & 6 deletions src/packcc.c
Original file line number Diff line number Diff line change
Expand Up @@ -3228,13 +3228,24 @@ static code_reach_t generate_quantifying_code(generate_t *gen, const node_t *exp
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "const size_t n0 = chunk->thunks.len;\n");
}
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "int i;\n");
stream__write_characters(gen->stream, ' ', indent);
if (max < 0)
stream__puts(gen->stream, "for (i = 0;; i++) {\n");
else
if (max < 0) {
if (min > 0) {
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "int i;\n");
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "for (i = 0;; i++) {\n");
}
else {
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "for (;;) {\n");
}
}
else {
stream__write_characters(gen->stream, ' ', indent);
stream__puts(gen->stream, "int i;\n");
stream__write_characters(gen->stream, ' ', indent);
stream__printf(gen->stream, "for (i = 0; i < %d; i++) {\n", max);
}
stream__write_characters(gen->stream, ' ', indent + 4);
stream__puts(gen->stream, "const size_t p = ctx->cur;\n");
stream__write_characters(gen->stream, ' ', indent + 4);
Expand Down
7 changes: 1 addition & 6 deletions tests/code_generation.d/generation.bats
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,7 @@ load "$TESTDIR/utils.sh"
}

@test "Testing code_generation.d - compilation" {
test_compile \
-D pcc_create=my_create \
-D pcc_destroy=my_destroy \
-D pcc_parse=my_parse \
-D pcc_context_t=my_context_t \
-D RET_TYPE=double
${CC:-cc} -I "$BATS_TEST_DIRNAME" "$BATS_TEST_DIRNAME/parser.c" "$BATS_TEST_DIRNAME/main.c" -o "$BATS_TEST_DIRNAME/parser" "$@"
}

@test "Testing code_generation.d - earlyheader" {
Expand Down
2 changes: 1 addition & 1 deletion tests/code_generation.d/input.peg
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
%header { /* HEADER ONLY */ }

%source {
int custom_function() {
int custom_function(void) {
return 42;
}
}
Expand Down
9 changes: 9 additions & 0 deletions tests/code_generation.d/main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#include "parser.h"

int main(int argc, char **argv) {
double ret;
my_context_t *ctx = my_create(0);
while (my_parse(ctx, &ret));
my_destroy(ctx);
return 0;
}

0 comments on commit 35b71a7

Please sign in to comment.