X-Git-Url: https://jxself.org/git/?p=inform.git;a=blobdiff_plain;f=src%2Fdirects.c;fp=src%2Fdirects.c;h=d8374c367a6e8863eae86cb5d2f5e59826c877fc;hp=388ac861bcae9ba46f13fbc033ab4a5b4824f03a;hb=ee3b3a0cb830792c0569230872a0af20eab8bb7b;hpb=8e63120c630c94c598d4e2d6ba823dac59bce8fa diff --git a/src/directs.c b/src/directs.c index 388ac86..d8374c3 100644 --- a/src/directs.c +++ b/src/directs.c @@ -1,7 +1,7 @@ /* ------------------------------------------------------------------------- */ /* "directs" : Directives (# commands) */ /* */ -/* Part of Inform 6.40 */ +/* Part of Inform 6.41 */ /* copyright (c) Graham Nelson 1993 - 2022 */ /* */ /* Inform is free software: you can redistribute it and/or modify */ @@ -134,10 +134,10 @@ extern int parse_given_directive(int internal_flag) } while (TRUE); /* --------------------------------------------------------------------- */ - /* Array arrayname array... */ + /* Array [static] */ /* --------------------------------------------------------------------- */ - case ARRAY_CODE: make_global(TRUE, FALSE); break; /* See "tables.c" */ + case ARRAY_CODE: make_array(); break; /* See "arrays.c" */ /* --------------------------------------------------------------------- */ /* Attribute newname [alias oldname] */ @@ -248,11 +248,6 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); /* --------------------------------------------------------------------- */ case DEFAULT_CODE: - if (module_switch) - { error("'Default' cannot be used in -M (Module) mode"); - panic_mode_error_recovery(); return FALSE; - } - get_next_token(); if (token_type != SYMBOL_TT) return ebf_error_recover("name", token_text); @@ -378,10 +373,10 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); make_fake_action(); break; /* see "verbs.c" */ /* --------------------------------------------------------------------- */ - /* Global variable [= value / array...] */ + /* Global [ [=] ] */ /* --------------------------------------------------------------------- */ - case GLOBAL_CODE: make_global(FALSE, FALSE); break; /* See "tables.c" */ + case GLOBAL_CODE: make_global(); break; /* See "arrays.c" */ /* --------------------------------------------------------------------- */ /* If... */ @@ -559,26 +554,10 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); /* --------------------------------------------------------------------- */ /* Import global [, ...] */ - /* */ - /* (Further imported goods may be allowed later.) */ /* --------------------------------------------------------------------- */ case IMPORT_CODE: - if (!module_switch) - { error("'Import' can only be used in -M (Module) mode"); - panic_mode_error_recovery(); return FALSE; - } - directives.enabled = TRUE; - do - { get_next_token(); - if ((token_type == DIRECTIVE_TT) && (token_value == GLOBAL_CODE)) - make_global(FALSE, TRUE); - else error_named("'Import' cannot import things of this type:", - token_text); - get_next_token(); - } while ((token_type == SEP_TT) && (token_value == COMMA_SEP)); - put_token_back(); - directives.enabled = FALSE; + error("The 'Import' directive is no longer supported."); break; /* --------------------------------------------------------------------- */ @@ -613,13 +592,7 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); case LINK_CODE: get_next_token(); - if (token_type != DQ_TT) - return ebf_error_recover("filename in double-quotes", token_text); - if (strlen(token_text) >= PATHLEN-1) { - error_numbered("'Link' filename is too long; max length is", PATHLEN-1); - break; - } - link_module(token_text); /* See "linker.c" */ + error("The 'Link' directive is no longer supported."); break; /* --------------------------------------------------------------------- */ @@ -631,10 +604,6 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); /* --------------------------------------------------------------------- */ case LOWSTRING_CODE: - if (module_switch) - { error("'LowString' cannot be used in -M (Module) mode"); - panic_mode_error_recovery(); return FALSE; - } if (glulx_mode) { error("The LowString directive has no meaning in Glulx."); panic_mode_error_recovery(); return FALSE; @@ -888,9 +857,6 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); /* --------------------------------------------------------------------- */ case STATUSLINE_CODE: - if (module_switch) - warning("This does not set the final game's statusline"); - directive_keywords.enabled = TRUE; get_next_token(); directive_keywords.enabled = FALSE; @@ -974,9 +940,18 @@ Fake_Action directives to a point after the inclusion of \"Parser\".)"); if (token_type != DQ_TT) return ebf_error_recover("string of switches", token_text); if (!ignore_switches_switch) - { if (constant_made_yet) - error("A 'Switches' directive must must come before \ -the first constant definition"); + { + if (constant_made_yet) { + error("A 'Switches' directive must must come before the first constant definition"); + break; + } + if (no_routines > 1) + { + /* The built-in Main__ routine is number zero. */ + error("A 'Switches' directive must come before the first routine definition."); + break; + } + obsolete_warning("the Switches directive is deprecated and may produce incorrect results. Use command-line arguments or header comments."); switches(token_text, 0); /* see "inform.c" */ } break; @@ -1000,9 +975,9 @@ the first constant definition"); /* [on/off/NUM] {same as "assembly"} */ /* assembly [on/off/NUM] */ /* expressions [on/off/NUM] */ - /* lines [on/off/NUM] */ + /* lines [on/off/NUM] {not supported} */ /* tokens [on/off/NUM] */ - /* linker [on/off/NUM] */ + /* linker [on/off/NUM] {not supported} */ /* */ /* The first four trace commands immediately display a compiler table. */ /* The rest set or clear an ongoing trace. */ @@ -1055,17 +1030,20 @@ the first constant definition"); trace_level = &expr_trace_level; break; case TOKENS_TK: trace_level = &tokens_trace_level; break; - case LINKER_TK: - trace_level = &linker_trace_level; break; case DICTIONARY_TK: case SYMBOLS_TK: case OBJECTS_TK: case VERBS_TK: + /* show a table rather than changing any trace level */ trace_level = NULL; break; case LINES_TK: /* never implememented */ trace_level = NULL; break; + case LINKER_TK: + /* no longer implememented */ + trace_level = NULL; break; default: + /* default to "Trace assembly" */ put_token_back(); trace_level = &asm_trace_level; break; } @@ -1093,7 +1071,7 @@ the first constant definition"); HandleTraceKeyword: - if (i == LINES_TK) { + if (i == LINES_TK || i == LINKER_TK) { warning_named("Trace option is not supported:", trace_keywords.keywords[i]); break; } @@ -1187,6 +1165,7 @@ the first constant definition"); { error("The version number must be in the range 3 to 8"); break; } + obsolete_warning("the Version directive is deprecated and may produce incorrect results. Use -vN instead, as either a command-line argument or a header comment."); select_version(i); /* We must now do a small dance to reset the DICT_ENTRY_BYTES constant, which was defined at startup based on the Z-code