diff options
| -rw-r--r-- | src/lib/aplwc_internal.h | 6 | ||||
| -rw-r--r-- | src/lib/module.c | 7 | ||||
| -rw-r--r-- | src/lib/syntax.c | 1 | ||||
| -rwxr-xr-x | tests/scripts/bad/10.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/11.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/12.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/13.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/7.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/8.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/bad/9.aplwc | 3 | ||||
| -rwxr-xr-x | tests/scripts/good/3.aplwc | 3 |
11 files changed, 29 insertions, 9 deletions
diff --git a/src/lib/aplwc_internal.h b/src/lib/aplwc_internal.h index 0bdd5b5..328b5de 100644 --- a/src/lib/aplwc_internal.h +++ b/src/lib/aplwc_internal.h @@ -32,11 +32,11 @@ typedef int symbol_t; enum keyword { KW_MODULE, KW_SYMBOL, - KW_EXPORT, - - N_KWDS + KW_EXPORT }; +#define N_KWDS KW_EXPORT+1 + struct aplwc { struct aplwc_fns fns; enum aplwc_rc last_error; diff --git a/src/lib/module.c b/src/lib/module.c index c7e552f..2ef5ba3 100644 --- a/src/lib/module.c +++ b/src/lib/module.c @@ -65,7 +65,7 @@ read_keyword_decl(struct aplwc *aplwc, struct aplwc_module *module, size_t offse #define t(n) module->tokens->tokens[offset+(n)] - max = module->tokens->length - offset; + max = module->tokens->length - offset - 1; assert(t(0).tag == TOKEN_TAG_KEYWORD); switch(t(0).data.keyword){ @@ -103,12 +103,9 @@ fail: } } break; - default: - assert(0); - return -1; } - if((len >= 0) && (max > (size_t)len)) + if(ALWAYS(len >= 0) && (max > (size_t)len)) if(t(len+1).tag != TOKEN_TAG_NEWLINE) goto fail; len++; /* For the keyword itself */ diff --git a/src/lib/syntax.c b/src/lib/syntax.c index 5c340bc..4850b1a 100644 --- a/src/lib/syntax.c +++ b/src/lib/syntax.c @@ -520,7 +520,6 @@ keyword_init(struct aplwc *aplwc) case KW_MODULE: cstr = "module"; break; case KW_SYMBOL: cstr = "symbol"; break; case KW_EXPORT: cstr = "export"; break; - case N_KWDS: assert(0); break; } if((str = chars_to_string(aplwc, cstr, -1)) == NULL) diff --git a/tests/scripts/bad/10.aplwc b/tests/scripts/bad/10.aplwc new file mode 100755 index 0000000..ae7d5f7 --- /dev/null +++ b/tests/scripts/bad/10.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:module
\ No newline at end of file diff --git a/tests/scripts/bad/11.aplwc b/tests/scripts/bad/11.aplwc new file mode 100755 index 0000000..3de20cd --- /dev/null +++ b/tests/scripts/bad/11.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:module 123 diff --git a/tests/scripts/bad/12.aplwc b/tests/scripts/bad/12.aplwc new file mode 100755 index 0000000..471643b --- /dev/null +++ b/tests/scripts/bad/12.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:symbol plus
\ No newline at end of file diff --git a/tests/scripts/bad/13.aplwc b/tests/scripts/bad/13.aplwc new file mode 100755 index 0000000..50bdb9f --- /dev/null +++ b/tests/scripts/bad/13.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:symbol plus + + diff --git a/tests/scripts/bad/7.aplwc b/tests/scripts/bad/7.aplwc new file mode 100755 index 0000000..ae9dcf3 --- /dev/null +++ b/tests/scripts/bad/7.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:symbol
\ No newline at end of file diff --git a/tests/scripts/bad/8.aplwc b/tests/scripts/bad/8.aplwc new file mode 100755 index 0000000..c2610e0 --- /dev/null +++ b/tests/scripts/bad/8.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:symbol 123 diff --git a/tests/scripts/bad/9.aplwc b/tests/scripts/bad/9.aplwc new file mode 100755 index 0000000..469cc0b --- /dev/null +++ b/tests/scripts/bad/9.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:symbol plus 123 diff --git a/tests/scripts/good/3.aplwc b/tests/scripts/good/3.aplwc new file mode 100755 index 0000000..7a6c0c5 --- /dev/null +++ b/tests/scripts/good/3.aplwc @@ -0,0 +1,3 @@ +#!/usr/bin/env aplwc-repl + +:export plus minus foo
\ No newline at end of file |