From 246d62c029e5e4fddf76ab5bf11532e71aa10da3 Mon Sep 17 00:00:00 2001 From: Francesco Cozzuto Date: Wed, 15 Oct 2025 10:50:51 +0200 Subject: [PATCH] Add fuzz testing corpus and build --- .gitignore | 1 + Makefile | 16 +++++++++ file.wl | 8 +++-- fuzz.c | 88 +++++++++++++++++++++++++++++++++++++++++++++++ fuzz_input/000.wl | 1 + fuzz_input/001.wl | 1 + fuzz_input/002.wl | 1 + fuzz_input/003.wl | 1 + fuzz_input/004.wl | 1 + fuzz_input/005.wl | 1 + fuzz_input/006.wl | 1 + fuzz_input/007.wl | 1 + fuzz_input/008.wl | 1 + fuzz_input/009.wl | 1 + fuzz_input/010.wl | 1 + fuzz_input/011.wl | 1 + fuzz_input/012.wl | 1 + fuzz_input/013.wl | 1 + fuzz_input/014.wl | 1 + fuzz_input/015.wl | 1 + fuzz_input/016.wl | 1 + fuzz_input/017.wl | 1 + fuzz_input/018.wl | 1 + fuzz_input/019.wl | 1 + fuzz_input/020.wl | 1 + fuzz_input/021.wl | 1 + fuzz_input/022.wl | 1 + fuzz_input/023.wl | 1 + fuzz_input/024.wl | 1 + fuzz_input/025.wl | 1 + fuzz_input/026.wl | 1 + fuzz_input/027.wl | 1 + fuzz_input/028.wl | 1 + fuzz_input/029.wl | 1 + fuzz_input/030.wl | 1 + fuzz_input/031.wl | 1 + fuzz_input/032.wl | 1 + fuzz_input/033.wl | 1 + fuzz_input/034.wl | 1 + fuzz_input/035.wl | 1 + fuzz_input/036.wl | 1 + fuzz_input/037.wl | 1 + fuzz_input/038.wl | 1 + fuzz_input/039.wl | 1 + fuzz_input/040.wl | 1 + fuzz_input/041.wl | 1 + fuzz_input/042.wl | 1 + fuzz_input/043.wl | 1 + fuzz_input/044.wl | 1 + fuzz_input/045.wl | 1 + fuzz_input/046.wl | 1 + fuzz_input/047.wl | 1 + fuzz_input/048.wl | 1 + fuzz_input/049.wl | 1 + fuzz_input/050.wl | 1 + fuzz_input/051.wl | 1 + fuzz_input/052.wl | 1 + fuzz_input/053.wl | 1 + fuzz_input/054.wl | 1 + fuzz_input/055.wl | 1 + fuzz_input/056.wl | 1 + fuzz_input/057.wl | 1 + fuzz_input/058.wl | 1 + fuzz_input/059.wl | 1 + fuzz_input/060.wl | 1 + fuzz_input/061.wl | 1 + fuzz_input/062.wl | 1 + fuzz_input/063.wl | 1 + fuzz_input/064.wl | 1 + fuzz_input/065.wl | 2 ++ fuzz_input/066.wl | 3 ++ fuzz_input/067.wl | 1 + fuzz_input/068.wl | 1 + fuzz_input/069.wl | 1 + fuzz_input/070.wl | 1 + fuzz_input/071.wl | 1 + fuzz_input/072.wl | 1 + fuzz_input/073.wl | 1 + fuzz_input/074.wl | 1 + fuzz_input/075.wl | 1 + fuzz_input/076.wl | 5 +++ fuzz_input/077.wl | 3 ++ fuzz_input/078.wl | 3 ++ fuzz_input/079.wl | 3 ++ fuzz_input/080.wl | 3 ++ fuzz_input/081.wl | 3 ++ fuzz_input/082.wl | 3 ++ fuzz_input/083.wl | 4 +++ fuzz_input/084.wl | 7 ++++ fuzz_input/085.wl | 3 ++ fuzz_input/086.wl | 3 ++ fuzz_input/087.wl | 5 +++ fuzz_input/088.wl | 5 +++ fuzz_input/089.wl | 5 +++ fuzz_input/090.wl | 2 ++ fuzz_input/091.wl | 4 +++ fuzz_input/092.wl | 2 ++ fuzz_input/093.wl | 4 +++ fuzz_input/094.wl | 2 ++ fuzz_input/095.wl | 2 ++ fuzz_input/096.wl | 5 +++ fuzz_input/097.wl | 3 ++ fuzz_input/098.wl | 6 ++++ fuzz_input/099.wl | 6 ++++ fuzz_input/100.wl | 6 ++++ fuzz_input/101.wl | 6 ++++ fuzz_input/102.wl | 2 ++ fuzz_input/103.wl | 2 ++ fuzz_input/104.wl | 5 +++ fuzz_input/105.wl | 5 +++ fuzz_input/106.wl | 5 +++ fuzz_input/107.wl | 5 +++ fuzz_input/108.wl | 5 +++ fuzz_input/109.wl | 1 + fuzz_input/110.wl | 1 + fuzz_input/111.wl | 1 + fuzz_input/112.wl | 2 ++ 117 files changed, 326 insertions(+), 3 deletions(-) create mode 100644 fuzz.c create mode 100644 fuzz_input/000.wl create mode 100644 fuzz_input/001.wl create mode 100644 fuzz_input/002.wl create mode 100644 fuzz_input/003.wl create mode 100644 fuzz_input/004.wl create mode 100644 fuzz_input/005.wl create mode 100644 fuzz_input/006.wl create mode 100644 fuzz_input/007.wl create mode 100644 fuzz_input/008.wl create mode 100644 fuzz_input/009.wl create mode 100644 fuzz_input/010.wl create mode 100644 fuzz_input/011.wl create mode 100644 fuzz_input/012.wl create mode 100644 fuzz_input/013.wl create mode 100644 fuzz_input/014.wl create mode 100644 fuzz_input/015.wl create mode 100644 fuzz_input/016.wl create mode 100644 fuzz_input/017.wl create mode 100644 fuzz_input/018.wl create mode 100644 fuzz_input/019.wl create mode 100644 fuzz_input/020.wl create mode 100644 fuzz_input/021.wl create mode 100644 fuzz_input/022.wl create mode 100644 fuzz_input/023.wl create mode 100644 fuzz_input/024.wl create mode 100644 fuzz_input/025.wl create mode 100644 fuzz_input/026.wl create mode 100644 fuzz_input/027.wl create mode 100644 fuzz_input/028.wl create mode 100644 fuzz_input/029.wl create mode 100644 fuzz_input/030.wl create mode 100644 fuzz_input/031.wl create mode 100644 fuzz_input/032.wl create mode 100644 fuzz_input/033.wl create mode 100644 fuzz_input/034.wl create mode 100644 fuzz_input/035.wl create mode 100644 fuzz_input/036.wl create mode 100644 fuzz_input/037.wl create mode 100644 fuzz_input/038.wl create mode 100644 fuzz_input/039.wl create mode 100644 fuzz_input/040.wl create mode 100644 fuzz_input/041.wl create mode 100644 fuzz_input/042.wl create mode 100644 fuzz_input/043.wl create mode 100644 fuzz_input/044.wl create mode 100644 fuzz_input/045.wl create mode 100644 fuzz_input/046.wl create mode 100644 fuzz_input/047.wl create mode 100644 fuzz_input/048.wl create mode 100644 fuzz_input/049.wl create mode 100644 fuzz_input/050.wl create mode 100644 fuzz_input/051.wl create mode 100644 fuzz_input/052.wl create mode 100644 fuzz_input/053.wl create mode 100644 fuzz_input/054.wl create mode 100644 fuzz_input/055.wl create mode 100644 fuzz_input/056.wl create mode 100644 fuzz_input/057.wl create mode 100644 fuzz_input/058.wl create mode 100644 fuzz_input/059.wl create mode 100644 fuzz_input/060.wl create mode 100644 fuzz_input/061.wl create mode 100644 fuzz_input/062.wl create mode 100644 fuzz_input/063.wl create mode 100644 fuzz_input/064.wl create mode 100644 fuzz_input/065.wl create mode 100644 fuzz_input/066.wl create mode 100644 fuzz_input/067.wl create mode 100644 fuzz_input/068.wl create mode 100644 fuzz_input/069.wl create mode 100644 fuzz_input/070.wl create mode 100644 fuzz_input/071.wl create mode 100644 fuzz_input/072.wl create mode 100644 fuzz_input/073.wl create mode 100644 fuzz_input/074.wl create mode 100644 fuzz_input/075.wl create mode 100644 fuzz_input/076.wl create mode 100644 fuzz_input/077.wl create mode 100644 fuzz_input/078.wl create mode 100644 fuzz_input/079.wl create mode 100644 fuzz_input/080.wl create mode 100644 fuzz_input/081.wl create mode 100644 fuzz_input/082.wl create mode 100644 fuzz_input/083.wl create mode 100644 fuzz_input/084.wl create mode 100644 fuzz_input/085.wl create mode 100644 fuzz_input/086.wl create mode 100644 fuzz_input/087.wl create mode 100644 fuzz_input/088.wl create mode 100644 fuzz_input/089.wl create mode 100644 fuzz_input/090.wl create mode 100644 fuzz_input/091.wl create mode 100644 fuzz_input/092.wl create mode 100644 fuzz_input/093.wl create mode 100644 fuzz_input/094.wl create mode 100644 fuzz_input/095.wl create mode 100644 fuzz_input/096.wl create mode 100644 fuzz_input/097.wl create mode 100644 fuzz_input/098.wl create mode 100644 fuzz_input/099.wl create mode 100644 fuzz_input/100.wl create mode 100644 fuzz_input/101.wl create mode 100644 fuzz_input/102.wl create mode 100644 fuzz_input/103.wl create mode 100644 fuzz_input/104.wl create mode 100644 fuzz_input/105.wl create mode 100644 fuzz_input/106.wl create mode 100644 fuzz_input/107.wl create mode 100644 fuzz_input/108.wl create mode 100644 fuzz_input/109.wl create mode 100644 fuzz_input/110.wl create mode 100644 fuzz_input/111.wl create mode 100644 fuzz_input/112.wl diff --git a/.gitignore b/.gitignore index 170088a..cebe78c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ coverage_html/ test test.exe test_cov +fuzz wl wl.exe wl_cov \ No newline at end of file diff --git a/Makefile b/Makefile index 4f71308..64a14de 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,7 @@ +AFL_CC ?= afl-clang-fast +AFL_CXX ?= afl-clang-fast++ + .PHONY: all coverage coverage_report install uninstall all: wl @@ -19,6 +22,19 @@ coverage_report: lcov --remove coverage.info '/usr/*' --output-file coverage_filtered.info genhtml coverage_filtered.info --output-directory coverage_html --title "WL Template Engine Coverage" +fuzz: fuzz.c wl.c wl.h + $(AFL_CC) fuzz.c wl.c -o fuzz \ + -g -O3 -Wall \ + -fsanitize=address,undefined \ + -fno-omit-frame-pointer + +bugs: fuzz + AFL_SKIP_CPUFREQ=1 afl-fuzz \ + -i fuzz_input \ + -o /tmp/fuzz_output \ + -m none \ + ./fuzz + install: wl sudo cp wl /usr/local/bin diff --git a/file.wl b/file.wl index ffabf84..7fd74f0 100644 --- a/file.wl +++ b/file.wl @@ -1,5 +1,7 @@ -let username = - -Hello, my name is \escape(username) +procedure page(title, lang) + + \{title} + +page("Hello, world!", "it") \ No newline at end of file diff --git a/fuzz.c b/fuzz.c new file mode 100644 index 0000000..a615897 --- /dev/null +++ b/fuzz.c @@ -0,0 +1,88 @@ +#include +#include +#include +#include +#include "wl.h" + +#define MAX_INPUT_SIZE (64 * 1024) // 64KB max input +#define ARENA_SIZE (1 << 20) // 1MB arena + +// Persistent mode: AFL will call this loop many times without restarting +__AFL_FUZZ_INIT(); + +int main(int argc, char **argv) +{ + // Allocate arena once (outside the AFL loop) + char *mem = malloc(ARENA_SIZE); + if (mem == NULL) { + fprintf(stderr, "Failed to allocate memory\n"); + return -1; + } + + // Buffer for input + unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF; + +#ifdef __AFL_HAVE_MANUAL_CONTROL + __AFL_INIT(); +#endif + + // AFL persistent mode: loop up to 1000 times per process + while (__AFL_LOOP(1000)) { + int len = __AFL_FUZZ_TESTCASE_LEN; + + // Limit input size + if (len > MAX_INPUT_SIZE) { + len = MAX_INPUT_SIZE; + } + + // Reset arena for each iteration + WL_Arena arena = { mem, ARENA_SIZE, 0 }; + + // Initialize compiler + WL_Compiler *c = wl_compiler_init(&arena); + if (c == NULL) { + continue; // Out of memory, skip this input + } + + // Try to compile the input + WL_AddResult res = wl_compiler_add( + c, + (WL_String) { "", 0 }, // empty path + (WL_String) { (char*)buf, len } + ); + + // If compilation succeeded, try to link + if (res.type == WL_ADD_LINK) { + WL_Program program; + int ret = wl_compiler_link(c, &program); + + // If linking succeeded, optionally execute (for deeper fuzzing) + if (ret == 0) { + WL_Runtime *rt = wl_runtime_init(&arena, program); + if (rt != NULL) { + // Execute up to 1000 steps to avoid infinite loops + for (int i = 0; i < 1000; i++) { + WL_EvalResult eval_res = wl_runtime_eval(rt); + + if (eval_res.type == WL_EVAL_DONE || + eval_res.type == WL_EVAL_ERROR) { + break; + } + + // Handle syscalls/sysvars by pushing dummy values + if (eval_res.type == WL_EVAL_SYSVAR) { + wl_push_s64(rt, 42); + } else if (eval_res.type == WL_EVAL_SYSCALL) { + wl_push_s64(rt, 42); + } + } + } + } + } + + // Arena is automatically reset on next iteration + } + + free(mem); + return 0; +} \ No newline at end of file diff --git a/fuzz_input/000.wl b/fuzz_input/000.wl new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/fuzz_input/000.wl @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/fuzz_input/001.wl b/fuzz_input/001.wl new file mode 100644 index 0000000..e6adf3f --- /dev/null +++ b/fuzz_input/001.wl @@ -0,0 +1 @@ +0.4 \ No newline at end of file diff --git a/fuzz_input/002.wl b/fuzz_input/002.wl new file mode 100644 index 0000000..c86c3f3 --- /dev/null +++ b/fuzz_input/002.wl @@ -0,0 +1 @@ +none \ No newline at end of file diff --git a/fuzz_input/003.wl b/fuzz_input/003.wl new file mode 100644 index 0000000..f32a580 --- /dev/null +++ b/fuzz_input/003.wl @@ -0,0 +1 @@ +true \ No newline at end of file diff --git a/fuzz_input/004.wl b/fuzz_input/004.wl new file mode 100644 index 0000000..02e4a84 --- /dev/null +++ b/fuzz_input/004.wl @@ -0,0 +1 @@ +false \ No newline at end of file diff --git a/fuzz_input/005.wl b/fuzz_input/005.wl new file mode 100644 index 0000000..ea7e697 --- /dev/null +++ b/fuzz_input/005.wl @@ -0,0 +1 @@ +"Hello, world!" \ No newline at end of file diff --git a/fuzz_input/006.wl b/fuzz_input/006.wl new file mode 100644 index 0000000..b0dc3a9 --- /dev/null +++ b/fuzz_input/006.wl @@ -0,0 +1 @@ +'Hello, world!' \ No newline at end of file diff --git a/fuzz_input/007.wl b/fuzz_input/007.wl new file mode 100644 index 0000000..d58ac16 --- /dev/null +++ b/fuzz_input/007.wl @@ -0,0 +1 @@ +"\\" \ No newline at end of file diff --git a/fuzz_input/008.wl b/fuzz_input/008.wl new file mode 100644 index 0000000..5a37384 --- /dev/null +++ b/fuzz_input/008.wl @@ -0,0 +1 @@ +"\n" \ No newline at end of file diff --git a/fuzz_input/009.wl b/fuzz_input/009.wl new file mode 100644 index 0000000..c61f7f7 --- /dev/null +++ b/fuzz_input/009.wl @@ -0,0 +1 @@ +"\t" \ No newline at end of file diff --git a/fuzz_input/010.wl b/fuzz_input/010.wl new file mode 100644 index 0000000..c9d1337 --- /dev/null +++ b/fuzz_input/010.wl @@ -0,0 +1 @@ +"\r" \ No newline at end of file diff --git a/fuzz_input/011.wl b/fuzz_input/011.wl new file mode 100644 index 0000000..a3ec2ed --- /dev/null +++ b/fuzz_input/011.wl @@ -0,0 +1 @@ +"\"" \ No newline at end of file diff --git a/fuzz_input/012.wl b/fuzz_input/012.wl new file mode 100644 index 0000000..4ba5e0c --- /dev/null +++ b/fuzz_input/012.wl @@ -0,0 +1 @@ +"\'" \ No newline at end of file diff --git a/fuzz_input/013.wl b/fuzz_input/013.wl new file mode 100644 index 0000000..e3f5885 --- /dev/null +++ b/fuzz_input/013.wl @@ -0,0 +1 @@ +"\xFF" \ No newline at end of file diff --git a/fuzz_input/014.wl b/fuzz_input/014.wl new file mode 100644 index 0000000..08d82b1 --- /dev/null +++ b/fuzz_input/014.wl @@ -0,0 +1 @@ +"\x0F" \ No newline at end of file diff --git a/fuzz_input/015.wl b/fuzz_input/015.wl new file mode 100644 index 0000000..607c9df --- /dev/null +++ b/fuzz_input/015.wl @@ -0,0 +1 @@ +"\xF0" \ No newline at end of file diff --git a/fuzz_input/016.wl b/fuzz_input/016.wl new file mode 100644 index 0000000..6001c44 --- /dev/null +++ b/fuzz_input/016.wl @@ -0,0 +1 @@ +[1, 2, 3] \ No newline at end of file diff --git a/fuzz_input/017.wl b/fuzz_input/017.wl new file mode 100644 index 0000000..7d4e0b6 --- /dev/null +++ b/fuzz_input/017.wl @@ -0,0 +1 @@ ++{} \ No newline at end of file diff --git a/fuzz_input/018.wl b/fuzz_input/018.wl new file mode 100644 index 0000000..b8995c8 --- /dev/null +++ b/fuzz_input/018.wl @@ -0,0 +1 @@ ++{a:1} \ No newline at end of file diff --git a/fuzz_input/019.wl b/fuzz_input/019.wl new file mode 100644 index 0000000..33777b7 --- /dev/null +++ b/fuzz_input/019.wl @@ -0,0 +1 @@ ++{a:1,b:2,c:3} \ No newline at end of file diff --git a/fuzz_input/020.wl b/fuzz_input/020.wl new file mode 100644 index 0000000..a776f84 --- /dev/null +++ b/fuzz_input/020.wl @@ -0,0 +1 @@ +10-1-2 \ No newline at end of file diff --git a/fuzz_input/021.wl b/fuzz_input/021.wl new file mode 100644 index 0000000..9026c72 --- /dev/null +++ b/fuzz_input/021.wl @@ -0,0 +1 @@ +1+2*3 \ No newline at end of file diff --git a/fuzz_input/022.wl b/fuzz_input/022.wl new file mode 100644 index 0000000..255e0a0 --- /dev/null +++ b/fuzz_input/022.wl @@ -0,0 +1 @@ +(1+2)*3 \ No newline at end of file diff --git a/fuzz_input/023.wl b/fuzz_input/023.wl new file mode 100644 index 0000000..f2e4a85 --- /dev/null +++ b/fuzz_input/023.wl @@ -0,0 +1 @@ +1+(2*3) \ No newline at end of file diff --git a/fuzz_input/024.wl b/fuzz_input/024.wl new file mode 100644 index 0000000..dc462db --- /dev/null +++ b/fuzz_input/024.wl @@ -0,0 +1 @@ +1+2 \ No newline at end of file diff --git a/fuzz_input/025.wl b/fuzz_input/025.wl new file mode 100644 index 0000000..0709265 --- /dev/null +++ b/fuzz_input/025.wl @@ -0,0 +1 @@ +2-1 \ No newline at end of file diff --git a/fuzz_input/026.wl b/fuzz_input/026.wl new file mode 100644 index 0000000..21869de --- /dev/null +++ b/fuzz_input/026.wl @@ -0,0 +1 @@ +1-2 \ No newline at end of file diff --git a/fuzz_input/027.wl b/fuzz_input/027.wl new file mode 100644 index 0000000..b60f154 --- /dev/null +++ b/fuzz_input/027.wl @@ -0,0 +1 @@ +2*3 \ No newline at end of file diff --git a/fuzz_input/028.wl b/fuzz_input/028.wl new file mode 100644 index 0000000..ffe913b --- /dev/null +++ b/fuzz_input/028.wl @@ -0,0 +1 @@ +2/3 \ No newline at end of file diff --git a/fuzz_input/029.wl b/fuzz_input/029.wl new file mode 100644 index 0000000..5c2f2e6 --- /dev/null +++ b/fuzz_input/029.wl @@ -0,0 +1 @@ +4/2 \ No newline at end of file diff --git a/fuzz_input/030.wl b/fuzz_input/030.wl new file mode 100644 index 0000000..07f9b11 --- /dev/null +++ b/fuzz_input/030.wl @@ -0,0 +1 @@ +0%2 \ No newline at end of file diff --git a/fuzz_input/031.wl b/fuzz_input/031.wl new file mode 100644 index 0000000..9254b30 --- /dev/null +++ b/fuzz_input/031.wl @@ -0,0 +1 @@ +3%2 \ No newline at end of file diff --git a/fuzz_input/032.wl b/fuzz_input/032.wl new file mode 100644 index 0000000..43d8cc1 --- /dev/null +++ b/fuzz_input/032.wl @@ -0,0 +1 @@ +1.0+2.0 \ No newline at end of file diff --git a/fuzz_input/033.wl b/fuzz_input/033.wl new file mode 100644 index 0000000..e9223f8 --- /dev/null +++ b/fuzz_input/033.wl @@ -0,0 +1 @@ +2.0-1.0 \ No newline at end of file diff --git a/fuzz_input/034.wl b/fuzz_input/034.wl new file mode 100644 index 0000000..ce581bc --- /dev/null +++ b/fuzz_input/034.wl @@ -0,0 +1 @@ +1.0-2.0 \ No newline at end of file diff --git a/fuzz_input/035.wl b/fuzz_input/035.wl new file mode 100644 index 0000000..a78b8b9 --- /dev/null +++ b/fuzz_input/035.wl @@ -0,0 +1 @@ +2.0*3.0 \ No newline at end of file diff --git a/fuzz_input/036.wl b/fuzz_input/036.wl new file mode 100644 index 0000000..c0bdc76 --- /dev/null +++ b/fuzz_input/036.wl @@ -0,0 +1 @@ +2.0/3.0 \ No newline at end of file diff --git a/fuzz_input/037.wl b/fuzz_input/037.wl new file mode 100644 index 0000000..6631e3a --- /dev/null +++ b/fuzz_input/037.wl @@ -0,0 +1 @@ +4.0/2.0 \ No newline at end of file diff --git a/fuzz_input/038.wl b/fuzz_input/038.wl new file mode 100644 index 0000000..53a4a49 --- /dev/null +++ b/fuzz_input/038.wl @@ -0,0 +1 @@ +1+2.0 \ No newline at end of file diff --git a/fuzz_input/039.wl b/fuzz_input/039.wl new file mode 100644 index 0000000..85ef987 --- /dev/null +++ b/fuzz_input/039.wl @@ -0,0 +1 @@ +2-1.0 \ No newline at end of file diff --git a/fuzz_input/040.wl b/fuzz_input/040.wl new file mode 100644 index 0000000..c015124 --- /dev/null +++ b/fuzz_input/040.wl @@ -0,0 +1 @@ +1-2.0 \ No newline at end of file diff --git a/fuzz_input/041.wl b/fuzz_input/041.wl new file mode 100644 index 0000000..bb19f05 --- /dev/null +++ b/fuzz_input/041.wl @@ -0,0 +1 @@ +2*3.0 \ No newline at end of file diff --git a/fuzz_input/042.wl b/fuzz_input/042.wl new file mode 100644 index 0000000..4f8d89e --- /dev/null +++ b/fuzz_input/042.wl @@ -0,0 +1 @@ +2/3.0 \ No newline at end of file diff --git a/fuzz_input/043.wl b/fuzz_input/043.wl new file mode 100644 index 0000000..c202218 --- /dev/null +++ b/fuzz_input/043.wl @@ -0,0 +1 @@ +4/2.0 \ No newline at end of file diff --git a/fuzz_input/044.wl b/fuzz_input/044.wl new file mode 100644 index 0000000..222155a --- /dev/null +++ b/fuzz_input/044.wl @@ -0,0 +1 @@ +1.0+2 \ No newline at end of file diff --git a/fuzz_input/045.wl b/fuzz_input/045.wl new file mode 100644 index 0000000..2e2ad5b --- /dev/null +++ b/fuzz_input/045.wl @@ -0,0 +1 @@ +2.0-1 \ No newline at end of file diff --git a/fuzz_input/046.wl b/fuzz_input/046.wl new file mode 100644 index 0000000..5a63cde --- /dev/null +++ b/fuzz_input/046.wl @@ -0,0 +1 @@ +1.0-2 \ No newline at end of file diff --git a/fuzz_input/047.wl b/fuzz_input/047.wl new file mode 100644 index 0000000..7454964 --- /dev/null +++ b/fuzz_input/047.wl @@ -0,0 +1 @@ +2.0*3 \ No newline at end of file diff --git a/fuzz_input/048.wl b/fuzz_input/048.wl new file mode 100644 index 0000000..7bdbab6 --- /dev/null +++ b/fuzz_input/048.wl @@ -0,0 +1 @@ +2.0/3 \ No newline at end of file diff --git a/fuzz_input/049.wl b/fuzz_input/049.wl new file mode 100644 index 0000000..25c3b7a --- /dev/null +++ b/fuzz_input/049.wl @@ -0,0 +1 @@ +4.0/2 \ No newline at end of file diff --git a/fuzz_input/050.wl b/fuzz_input/050.wl new file mode 100644 index 0000000..e4ae5e6 --- /dev/null +++ b/fuzz_input/050.wl @@ -0,0 +1 @@ +len [] \ No newline at end of file diff --git a/fuzz_input/051.wl b/fuzz_input/051.wl new file mode 100644 index 0000000..7549890 --- /dev/null +++ b/fuzz_input/051.wl @@ -0,0 +1 @@ +len [1, 2, 3] \ No newline at end of file diff --git a/fuzz_input/052.wl b/fuzz_input/052.wl new file mode 100644 index 0000000..bac6643 --- /dev/null +++ b/fuzz_input/052.wl @@ -0,0 +1 @@ +len {} \ No newline at end of file diff --git a/fuzz_input/053.wl b/fuzz_input/053.wl new file mode 100644 index 0000000..b3260ba --- /dev/null +++ b/fuzz_input/053.wl @@ -0,0 +1 @@ +len {a:1} \ No newline at end of file diff --git a/fuzz_input/054.wl b/fuzz_input/054.wl new file mode 100644 index 0000000..060eb36 --- /dev/null +++ b/fuzz_input/054.wl @@ -0,0 +1 @@ +len {a:1,b:2,c:3} \ No newline at end of file diff --git a/fuzz_input/055.wl b/fuzz_input/055.wl new file mode 100644 index 0000000..ceba9a0 --- /dev/null +++ b/fuzz_input/055.wl @@ -0,0 +1 @@ +-12 \ No newline at end of file diff --git a/fuzz_input/056.wl b/fuzz_input/056.wl new file mode 100644 index 0000000..e882bae --- /dev/null +++ b/fuzz_input/056.wl @@ -0,0 +1 @@ +-12.34 \ No newline at end of file diff --git a/fuzz_input/057.wl b/fuzz_input/057.wl new file mode 100644 index 0000000..3a66ce3 --- /dev/null +++ b/fuzz_input/057.wl @@ -0,0 +1 @@ +1<2 \ No newline at end of file diff --git a/fuzz_input/058.wl b/fuzz_input/058.wl new file mode 100644 index 0000000..657f614 --- /dev/null +++ b/fuzz_input/058.wl @@ -0,0 +1 @@ +2<1 \ No newline at end of file diff --git a/fuzz_input/059.wl b/fuzz_input/059.wl new file mode 100644 index 0000000..83a09da --- /dev/null +++ b/fuzz_input/059.wl @@ -0,0 +1 @@ +1>2 \ No newline at end of file diff --git a/fuzz_input/060.wl b/fuzz_input/060.wl new file mode 100644 index 0000000..e039061 --- /dev/null +++ b/fuzz_input/060.wl @@ -0,0 +1 @@ +2>1 \ No newline at end of file diff --git a/fuzz_input/061.wl b/fuzz_input/061.wl new file mode 100644 index 0000000..dd37c92 --- /dev/null +++ b/fuzz_input/061.wl @@ -0,0 +1 @@ +1==1 \ No newline at end of file diff --git a/fuzz_input/062.wl b/fuzz_input/062.wl new file mode 100644 index 0000000..4146577 --- /dev/null +++ b/fuzz_input/062.wl @@ -0,0 +1 @@ +1==2 \ No newline at end of file diff --git a/fuzz_input/063.wl b/fuzz_input/063.wl new file mode 100644 index 0000000..6ca3718 --- /dev/null +++ b/fuzz_input/063.wl @@ -0,0 +1 @@ +1!=1 \ No newline at end of file diff --git a/fuzz_input/064.wl b/fuzz_input/064.wl new file mode 100644 index 0000000..f042b81 --- /dev/null +++ b/fuzz_input/064.wl @@ -0,0 +1 @@ +1!=2 \ No newline at end of file diff --git a/fuzz_input/065.wl b/fuzz_input/065.wl new file mode 100644 index 0000000..c6cc154 --- /dev/null +++ b/fuzz_input/065.wl @@ -0,0 +1,2 @@ +let a = 1 +a \ No newline at end of file diff --git a/fuzz_input/066.wl b/fuzz_input/066.wl new file mode 100644 index 0000000..cedcec9 --- /dev/null +++ b/fuzz_input/066.wl @@ -0,0 +1,3 @@ +let a = 1 +a = 2 +a \ No newline at end of file diff --git a/fuzz_input/067.wl b/fuzz_input/067.wl new file mode 100644 index 0000000..3e63451 --- /dev/null +++ b/fuzz_input/067.wl @@ -0,0 +1 @@ +[5, 6, 7][0] \ No newline at end of file diff --git a/fuzz_input/068.wl b/fuzz_input/068.wl new file mode 100644 index 0000000..798ffa1 --- /dev/null +++ b/fuzz_input/068.wl @@ -0,0 +1 @@ +[5, 6, 7][1] \ No newline at end of file diff --git a/fuzz_input/069.wl b/fuzz_input/069.wl new file mode 100644 index 0000000..c16a699 --- /dev/null +++ b/fuzz_input/069.wl @@ -0,0 +1 @@ +[5, 6, 7][2] \ No newline at end of file diff --git a/fuzz_input/070.wl b/fuzz_input/070.wl new file mode 100644 index 0000000..50d8cca --- /dev/null +++ b/fuzz_input/070.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}.a \ No newline at end of file diff --git a/fuzz_input/071.wl b/fuzz_input/071.wl new file mode 100644 index 0000000..26870d3 --- /dev/null +++ b/fuzz_input/071.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}.b \ No newline at end of file diff --git a/fuzz_input/072.wl b/fuzz_input/072.wl new file mode 100644 index 0000000..bdc2bbe --- /dev/null +++ b/fuzz_input/072.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}.c \ No newline at end of file diff --git a/fuzz_input/073.wl b/fuzz_input/073.wl new file mode 100644 index 0000000..bdac03c --- /dev/null +++ b/fuzz_input/073.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}['a'] \ No newline at end of file diff --git a/fuzz_input/074.wl b/fuzz_input/074.wl new file mode 100644 index 0000000..4558126 --- /dev/null +++ b/fuzz_input/074.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}['b'] \ No newline at end of file diff --git a/fuzz_input/075.wl b/fuzz_input/075.wl new file mode 100644 index 0000000..00a448d --- /dev/null +++ b/fuzz_input/075.wl @@ -0,0 +1 @@ ++{a:5,b:6,c:7}['c'] \ No newline at end of file diff --git a/fuzz_input/076.wl b/fuzz_input/076.wl new file mode 100644 index 0000000..ce77d94 --- /dev/null +++ b/fuzz_input/076.wl @@ -0,0 +1,5 @@ +let x = 1 +{ + let x = 2 + x +} \ No newline at end of file diff --git a/fuzz_input/077.wl b/fuzz_input/077.wl new file mode 100644 index 0000000..5cdb797 --- /dev/null +++ b/fuzz_input/077.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x.a = true +x \ No newline at end of file diff --git a/fuzz_input/078.wl b/fuzz_input/078.wl new file mode 100644 index 0000000..4fdb903 --- /dev/null +++ b/fuzz_input/078.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x.b = true +x \ No newline at end of file diff --git a/fuzz_input/079.wl b/fuzz_input/079.wl new file mode 100644 index 0000000..42107ed --- /dev/null +++ b/fuzz_input/079.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x.c = true +x \ No newline at end of file diff --git a/fuzz_input/080.wl b/fuzz_input/080.wl new file mode 100644 index 0000000..72e3a37 --- /dev/null +++ b/fuzz_input/080.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x['a'] = true +x \ No newline at end of file diff --git a/fuzz_input/081.wl b/fuzz_input/081.wl new file mode 100644 index 0000000..1aa841f --- /dev/null +++ b/fuzz_input/081.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x['b'] = true +x diff --git a/fuzz_input/082.wl b/fuzz_input/082.wl new file mode 100644 index 0000000..5e4c950 --- /dev/null +++ b/fuzz_input/082.wl @@ -0,0 +1,3 @@ +let x = {a:5,b:6,c:7} +x['c'] = true +x \ No newline at end of file diff --git a/fuzz_input/083.wl b/fuzz_input/083.wl new file mode 100644 index 0000000..df8a708 --- /dev/null +++ b/fuzz_input/083.wl @@ -0,0 +1,4 @@ +let a +let b +let c +a = b = c = 5 \ No newline at end of file diff --git a/fuzz_input/084.wl b/fuzz_input/084.wl new file mode 100644 index 0000000..d9eee96 --- /dev/null +++ b/fuzz_input/084.wl @@ -0,0 +1,7 @@ +let a +let b +let c +a = b = c = 5 +a +b +c \ No newline at end of file diff --git a/fuzz_input/085.wl b/fuzz_input/085.wl new file mode 100644 index 0000000..aabfd74 --- /dev/null +++ b/fuzz_input/085.wl @@ -0,0 +1,3 @@ +if 1 < 2: + 1 +2 \ No newline at end of file diff --git a/fuzz_input/086.wl b/fuzz_input/086.wl new file mode 100644 index 0000000..64fa3dc --- /dev/null +++ b/fuzz_input/086.wl @@ -0,0 +1,3 @@ +if 1 > 2: + 1 +2 \ No newline at end of file diff --git a/fuzz_input/087.wl b/fuzz_input/087.wl new file mode 100644 index 0000000..3f58885 --- /dev/null +++ b/fuzz_input/087.wl @@ -0,0 +1,5 @@ +if 1 < 2: + 1 +else + 2 +3 \ No newline at end of file diff --git a/fuzz_input/088.wl b/fuzz_input/088.wl new file mode 100644 index 0000000..bd13a83 --- /dev/null +++ b/fuzz_input/088.wl @@ -0,0 +1,5 @@ +if 1 > 2: + 1 +else + 2 +3 \ No newline at end of file diff --git a/fuzz_input/089.wl b/fuzz_input/089.wl new file mode 100644 index 0000000..c93c3b5 --- /dev/null +++ b/fuzz_input/089.wl @@ -0,0 +1,5 @@ +let i = 0 +while i < 3: { + true + i = i + 1 +} diff --git a/fuzz_input/090.wl b/fuzz_input/090.wl new file mode 100644 index 0000000..c9ef705 --- /dev/null +++ b/fuzz_input/090.wl @@ -0,0 +1,2 @@ +for a in ['A', 'B', 'C']: + a \ No newline at end of file diff --git a/fuzz_input/091.wl b/fuzz_input/091.wl new file mode 100644 index 0000000..d5b3eb8 --- /dev/null +++ b/fuzz_input/091.wl @@ -0,0 +1,4 @@ +for a, b in ['A', 'B', 'C']: { + a + b +} \ No newline at end of file diff --git a/fuzz_input/092.wl b/fuzz_input/092.wl new file mode 100644 index 0000000..579478d --- /dev/null +++ b/fuzz_input/092.wl @@ -0,0 +1,2 @@ +for a in {x:1,y:2,z:3}: + a \ No newline at end of file diff --git a/fuzz_input/093.wl b/fuzz_input/093.wl new file mode 100644 index 0000000..d48e84c --- /dev/null +++ b/fuzz_input/093.wl @@ -0,0 +1,4 @@ +for a, b in {x:1,y:2,z:3}: { + a + b +} \ No newline at end of file diff --git a/fuzz_input/094.wl b/fuzz_input/094.wl new file mode 100644 index 0000000..78967e0 --- /dev/null +++ b/fuzz_input/094.wl @@ -0,0 +1,2 @@ +procedure P() + 0 \ No newline at end of file diff --git a/fuzz_input/095.wl b/fuzz_input/095.wl new file mode 100644 index 0000000..c283a17 --- /dev/null +++ b/fuzz_input/095.wl @@ -0,0 +1,2 @@ +procedure P(a) + a \ No newline at end of file diff --git a/fuzz_input/096.wl b/fuzz_input/096.wl new file mode 100644 index 0000000..54be93c --- /dev/null +++ b/fuzz_input/096.wl @@ -0,0 +1,5 @@ +procedure P(a, b, c) { + a + b + c +} \ No newline at end of file diff --git a/fuzz_input/097.wl b/fuzz_input/097.wl new file mode 100644 index 0000000..cf8e175 --- /dev/null +++ b/fuzz_input/097.wl @@ -0,0 +1,3 @@ +procedure P() + 0 +P() \ No newline at end of file diff --git a/fuzz_input/098.wl b/fuzz_input/098.wl new file mode 100644 index 0000000..41a15f2 --- /dev/null +++ b/fuzz_input/098.wl @@ -0,0 +1,6 @@ +procedure P(a, b, c) { + a + b + c +} +P() \ No newline at end of file diff --git a/fuzz_input/099.wl b/fuzz_input/099.wl new file mode 100644 index 0000000..f649856 --- /dev/null +++ b/fuzz_input/099.wl @@ -0,0 +1,6 @@ +procedure P(a, b, c) { + a + b + c +} +P(1) \ No newline at end of file diff --git a/fuzz_input/100.wl b/fuzz_input/100.wl new file mode 100644 index 0000000..19d70c6 --- /dev/null +++ b/fuzz_input/100.wl @@ -0,0 +1,6 @@ +procedure P(a, b, c) { + a + b + c +} +P(1, 2) \ No newline at end of file diff --git a/fuzz_input/101.wl b/fuzz_input/101.wl new file mode 100644 index 0000000..4dfdb07 --- /dev/null +++ b/fuzz_input/101.wl @@ -0,0 +1,6 @@ +procedure P(a, b, c) { + a + b + c +} +P(1, 2, 3) \ No newline at end of file diff --git a/fuzz_input/102.wl b/fuzz_input/102.wl new file mode 100644 index 0000000..ae0d05d --- /dev/null +++ b/fuzz_input/102.wl @@ -0,0 +1,2 @@ +procedure N(n) n +N(1) + N(2) \ No newline at end of file diff --git a/fuzz_input/103.wl b/fuzz_input/103.wl new file mode 100644 index 0000000..f867650 --- /dev/null +++ b/fuzz_input/103.wl @@ -0,0 +1,2 @@ +P() +procedure P() 1 \ No newline at end of file diff --git a/fuzz_input/104.wl b/fuzz_input/104.wl new file mode 100644 index 0000000..918d1b6 --- /dev/null +++ b/fuzz_input/104.wl @@ -0,0 +1,5 @@ +P() +procedure P() 1 +{ + procedure P() 2 +} \ No newline at end of file diff --git a/fuzz_input/105.wl b/fuzz_input/105.wl new file mode 100644 index 0000000..c15edaf --- /dev/null +++ b/fuzz_input/105.wl @@ -0,0 +1,5 @@ +procedure P() 1 +P() +{ + procedure P() 2 +} \ No newline at end of file diff --git a/fuzz_input/106.wl b/fuzz_input/106.wl new file mode 100644 index 0000000..9b87b03 --- /dev/null +++ b/fuzz_input/106.wl @@ -0,0 +1,5 @@ +procedure P() 1 +{ + P() + procedure P() 2 +} \ No newline at end of file diff --git a/fuzz_input/107.wl b/fuzz_input/107.wl new file mode 100644 index 0000000..254082e --- /dev/null +++ b/fuzz_input/107.wl @@ -0,0 +1,5 @@ +procedure P() 1 +{ + procedure P() 2 + P() +} \ No newline at end of file diff --git a/fuzz_input/108.wl b/fuzz_input/108.wl new file mode 100644 index 0000000..852b4dc --- /dev/null +++ b/fuzz_input/108.wl @@ -0,0 +1,5 @@ +procedure P() 1 +{ + procedure P() 2 +} +P() \ No newline at end of file diff --git a/fuzz_input/109.wl b/fuzz_input/109.wl new file mode 100644 index 0000000..985ba55 --- /dev/null +++ b/fuzz_input/109.wl @@ -0,0 +1 @@ +Hello, world! \ No newline at end of file diff --git a/fuzz_input/110.wl b/fuzz_input/110.wl new file mode 100644 index 0000000..5d4ce0e --- /dev/null +++ b/fuzz_input/110.wl @@ -0,0 +1 @@ +
  • A
  • B
  • C
\ No newline at end of file diff --git a/fuzz_input/111.wl b/fuzz_input/111.wl new file mode 100644 index 0000000..6de6fc5 --- /dev/null +++ b/fuzz_input/111.wl @@ -0,0 +1 @@ +let a =
  • A
  • B
  • C
\ No newline at end of file diff --git a/fuzz_input/112.wl b/fuzz_input/112.wl new file mode 100644 index 0000000..0b722f3 --- /dev/null +++ b/fuzz_input/112.wl @@ -0,0 +1,2 @@ +let a =
  • A
  • B
  • C
+a \ No newline at end of file