/* likewise global variables, which are in some ways a */
/* simpler form of the same thing. */
/* */
-/* Copyright (c) Graham Nelson 1993 - 2020 */
-/* */
-/* This file is part of Inform. */
+/* Part of Inform 6.35 */
+/* copyright (c) Graham Nelson 1993 - 2020 */
/* */
/* Inform is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
area = static_array_area;
area_size = static_array_area_size;
}
+
+ if (i == 0) {
+ error("An array must have at least one entry");
+ }
/* Write the array size into the 0th byte/word of the array, if it's
a "table" or "string" array */
/* */
/* | -> | <number-of-entries> */
/* | --> | <entry-1> ... <entry-n> */
-/* | string | [ <entry-1> [,] [;] <entry-2> ... <entry-n> ]; */
+/* | string | [ <entry-1> [;] <entry-2> ... <entry-n> ]; */
/* | table */
/* | buffer */
/* */
goto RedefinitionOfSystemVar;
}
- if ((token_type != SYMBOL_TT) || (!(sflags[i] & UNKNOWN_SFLAG)))
+ if (token_type != SYMBOL_TT)
{ discard_token_location(beginning_debug_location);
if (array_flag)
ebf_error("new array name", token_text);
panic_mode_error_recovery(); return;
}
+ if (!(sflags[i] & UNKNOWN_SFLAG))
+ { discard_token_location(beginning_debug_location);
+ if (array_flag)
+ ebf_symbol_error("new array name", token_text, typename(stypes[i]), slines[i]);
+ else ebf_symbol_error("new global variable name", token_text, typename(stypes[i]), slines[i]);
+ panic_mode_error_recovery(); return;
+ }
+
if ((!array_flag) && (sflags[i] & USED_SFLAG))
error_named("Variable must be defined before use:", token_text);
CalculatedArraySize:
- if (module_switch && (AO.marker != 0))
- { error("Array sizes must be known now, not externally defined");
+ if (AO.marker != 0)
+ { error("Array sizes must be known now, not defined later");
break;
}