projects
/
inform.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update to commit e2647ad952b4d7afc9a186429c181efbc4958786
[inform.git]
/
src
/
objects.c
diff --git
a/src/objects.c
b/src/objects.c
index 8dad7c34d0e0ecc1bb1a4ece45be344d63f527ce..9d54ec21a30e3537100aa49ffdddc6571fc7556a 100644
(file)
--- a/
src/objects.c
+++ b/
src/objects.c
@@
-6,9
+6,8
@@
/* checks syntax and translates such directives into */
/* specifications for the object-maker. */
/* */
/* checks syntax and translates such directives into */
/* specifications for the object-maker. */
/* */
-/* 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 */
/* */
/* Inform is free software: you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
@@
-21,7
+20,7
@@
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
/* GNU General Public License for more details. */
/* */
/* You should have received a copy of the GNU General Public License */
-/* along with Inform. If not, see https://gnu.org/licenses/ *
/
+/* along with Inform. If not, see https://gnu.org/licenses/ *
/* */
/* ------------------------------------------------------------------------- */
/* */
/* ------------------------------------------------------------------------- */
@@
-135,13
+134,20
@@
more than",
get_next_token();
i = token_value; name = token_text;
get_next_token();
i = token_value; name = token_text;
- if (
(token_type != SYMBOL_TT) || (!(sflags[i] & UNKNOWN_SFLAG))
)
+ if (
token_type != SYMBOL_TT
)
{ discard_token_location(beginning_debug_location);
ebf_error("new attribute name", token_text);
panic_mode_error_recovery();
put_token_back();
return;
}
{ discard_token_location(beginning_debug_location);
ebf_error("new attribute name", token_text);
panic_mode_error_recovery();
put_token_back();
return;
}
+ if (!(sflags[i] & UNKNOWN_SFLAG))
+ { discard_token_location(beginning_debug_location);
+ ebf_symbol_error("new attribute name", token_text, typename(stypes[i]), slines[i]);
+ panic_mode_error_recovery();
+ put_token_back();
+ return;
+ }
directive_keywords.enabled = TRUE;
get_next_token();
directive_keywords.enabled = TRUE;
get_next_token();
@@
-226,13
+232,20
@@
Advanced game to get an extra 62)");
get_next_token();
i = token_value; name = token_text;
get_next_token();
i = token_value; name = token_text;
- if (
(token_type != SYMBOL_TT) || (!(sflags[i] & UNKNOWN_SFLAG))
)
+ if (
token_type != SYMBOL_TT
)
{ discard_token_location(beginning_debug_location);
ebf_error("new property name", token_text);
panic_mode_error_recovery();
put_token_back();
return;
}
{ discard_token_location(beginning_debug_location);
ebf_error("new property name", token_text);
panic_mode_error_recovery();
put_token_back();
return;
}
+ if (!(sflags[i] & UNKNOWN_SFLAG))
+ { discard_token_location(beginning_debug_location);
+ ebf_symbol_error("new property name", token_text, typename(stypes[i]), slines[i]);
+ panic_mode_error_recovery();
+ put_token_back();
+ return;
+ }
directive_keywords.enabled = TRUE;
get_next_token();
directive_keywords.enabled = TRUE;
get_next_token();
@@
-1081,12
+1094,7
@@
static void properties_segment_z(int this_segment)
{ if (stypes[token_value]==INDIVIDUAL_PROPERTY_T)
this_identifier_number = svals[token_value];
else
{ if (stypes[token_value]==INDIVIDUAL_PROPERTY_T)
this_identifier_number = svals[token_value];
else
- { char already_error[128];
- sprintf(already_error,
- "\"%s\" is a name already in use (with type %s) \
-and may not be used as a property name too",
- token_text, typename(stypes[token_value]));
- error(already_error);
+ { ebf_symbol_error("property name", token_text, typename(stypes[token_value]), slines[token_value]);
return;
}
}
return;
}
}
@@
-1350,12
+1358,7
@@
static void properties_segment_g(int this_segment)
{ if (stypes[token_value]==INDIVIDUAL_PROPERTY_T)
this_identifier_number = svals[token_value];
else
{ if (stypes[token_value]==INDIVIDUAL_PROPERTY_T)
this_identifier_number = svals[token_value];
else
- { char already_error[128];
- sprintf(already_error,
- "\"%s\" is a name already in use (with type %s) \
-and may not be used as a property name too",
- token_text, typename(stypes[token_value]));
- error(already_error);
+ { ebf_symbol_error("property name", token_text, typename(stypes[token_value]), slines[token_value]);
return;
}
}
return;
}
}
@@
-1776,13
+1779,18
@@
inconvenience, please contact the maintainers.");
}
else
{ get_next_token();
}
else
{ get_next_token();
- if ((token_type != SYMBOL_TT)
- || (!(sflags[token_value] & UNKNOWN_SFLAG)))
+ if (token_type != SYMBOL_TT)
{ discard_token_location(beginning_debug_location);
ebf_error("new class name", token_text);
panic_mode_error_recovery();
return;
}
{ discard_token_location(beginning_debug_location);
ebf_error("new class name", token_text);
panic_mode_error_recovery();
return;
}
+ if (!(sflags[token_value] & UNKNOWN_SFLAG))
+ { discard_token_location(beginning_debug_location);
+ ebf_symbol_error("new class name", token_text, typename(stypes[token_value]), slines[token_value]);
+ panic_mode_error_recovery();
+ return;
+ }
}
/* Each class also creates a modest object representing itself: */
}
/* Each class also creates a modest object representing itself: */
@@
-1976,10
+1984,13
@@
extern void make_object(int nearby_flag,
if (token_type == DQ_TT) textual_name = token_text;
else
if (token_type == DQ_TT) textual_name = token_text;
else
- { if ((token_type != SYMBOL_TT)
- || (!(sflags[token_value] & UNKNOWN_SFLAG)))
+ { if (token_type != SYMBOL_TT) {
ebf_error("name for new object or its textual short name",
token_text);
ebf_error("name for new object or its textual short name",
token_text);
+ }
+ else if (!(sflags[token_value] & UNKNOWN_SFLAG)) {
+ ebf_symbol_error("new object", token_text, typename(stypes[token_value]), slines[token_value]);
+ }
else
{ internal_name_symbol = token_value;
strcpy(internal_name, token_text);
else
{ internal_name_symbol = token_value;
strcpy(internal_name, token_text);