This is errmsg.c in view mode; [Download] [Up]
/*
* Copyright (C) 1985-1992 New York University
*
* This file is part of the Ada/Ed-C system. See the Ada/Ed README file for
* warranty (none) and distribution info and also the GNU General Public
* License for more details.
*/
#include "hdr.h"
#include "vars.h"
#include "miscprots.h"
#include "chapprots.h"
#include "smiscprots.h"
#include "errmsgprots.h"
static char *strings[5];
static char *insert(char *, int);
#ifdef TBSN
unit := FIND_UNIT(node);
find unit in which node was created.
[u_name, file] := unit;
if (file ? AISFILE) /= AISFILE then $ node from previous compunit
header := "in " + u_name(1) + " " + u_name(2);
header +:= "", in file "" + file + " :";
ERR_LIST([p_s, 12, msg+header]);
else $ node in current compilation unit
ERR_LIST([p_s, 12, msg]);
end if;
#endif
void errmsg_id(char *msg, Symbol name, char *lrm, Node node) /*;errmsg_id*/
{
strings[0] = ORIG_NAME(name);
errmsg(insert(msg, 1), lrm, node);
}
void errmsg_str(char *msg, char *str, char *lrm, Node node) /*;errmsg_str*/
{
strings[0] = str;
errmsg(insert(msg, 1), lrm, node);
}
void errmsg_nat(char *msg, Symbol sym, char *lrm, Node node) /*;errmsg_nat*/
{
strings[0] = nature_str(NATURE(sym));
errmsg(insert(msg, 1), lrm, node);
}
void errmsg_type(char *msg, Symbol type, char *lrm, Node node) /*;errmsg_type*/
{
strings[0] = full_type_name(type);
errmsg(insert(msg, 1), lrm, node);
}
void errmsg_nval(char *msg, Node name, char *lrm, Node node) /*;errmsg_nval*/
{
strings[0] = N_VAL(name);
errmsg(insert(msg, 1), lrm, node);
}
void errmsg_id_id(char *msg, Symbol name1, Symbol name2, char *lrm, Node node)
/*;errmsg_id_id*/
{
strings[0] = ORIG_NAME(name1);
strings[1] = ORIG_NAME(name2);
errmsg(insert(msg, 2), lrm, node);
}
void errmsg_id_type(char *msg, Symbol name, Symbol type, char *lrm, Node node)
/*;errmsg_id_type*/
{
strings[0] = ORIG_NAME(name);
strings[1] = full_type_name(type);
errmsg(insert(msg, 2), lrm, node);
}
void errmsg_nat_id_str(char *msg, Symbol sym, Symbol name, char *str, char *lrm,
Node node) /*;errmsg_nat_id_str*/
{
char *name_str;
strings[0] = nature_str(NATURE(sym));
name_str = ORIG_NAME(name);
if (name_str[0] == '#') name_str = "#BLOCK";
strings[1] = name_str;
strings[2] = str;
errmsg(insert(msg, 3), lrm, node);
}
void errmsg_str_id(char *msg, char *str, Symbol name, char *lrm, Node node)
/*;errmsg_str_id*/
{
strings[0] = str;
strings[1] = ORIG_NAME(name);
errmsg(insert(msg, 2), lrm, node);
}
void errmsg_str_num(char *msg, char *str, int i, char *lrm, Node node)
/*;errmsg_str_num*/
{
char numstr[5];
strings[0] = str;
sprintf(numstr, "%d", i);
strings[1] = numstr;
errmsg(insert(msg, 2), lrm, node);
}
static char *insert(char *in_format, int nstrings) /*;insert*/
{
/* -in_format- is a character string containing an error message, and 1 or
* more "substitution" (%) characters to be replaced by the character
* strings pointed to by the array -strings-
* -tmp_format- is a working copy to be used by this procedure (to avoid
* "clobbering" string constants).
*/
char *msg, *p;
char *tmp_format;
int i;
/* copy input format string */
tmp_format = emalloct((unsigned) strlen(in_format)+1, "errmsg-tmp");
strcpy(tmp_format, in_format);
/* initialize msg to empty string */
msg = emalloct(1, "errmsg-1");
*msg = '\0';
for (i = 0; i < nstrings; i++) {
p = strchr(tmp_format, '%');
if (p == 0) break;
*p = '\0';
if (p != tmp_format)
msg = strjoin(msg, tmp_format);
msg = strjoin(msg, strings[i]);
tmp_format = ++p;
}
if (tmp_format != '\0' )
msg = strjoin(msg, tmp_format);
if (p == 0) {
printf("error in proc insert, too few %c's\n", '%');
#ifdef TBSN
while (*strings != DUMMY_STR)
msg = strjoin(msg, *strings++);
#endif
}
return(msg);
}
/*
* Following are variations of pass1_error that call the appropriate
* errmsg_ routine.
* The original (simple case) pass1_error is still in 4c.c
*/
void pass1_error_id(char *msg, Symbol name, char *lrm_sec, Node node)
/*;pass1_error_id */
{
/* This procedure is invoked when a type error which requires a special
* message is encountered in resolve1.
*/
if (cdebug2 > 3) TO_ERRFILE("AT PROC : pass1_error_id");
if (!noop_error) errmsg_id(msg, name, lrm_sec, node);
noop_error = TRUE; /* To avoid cascaded errors.*/
}
void pass1_error_str(char *msg, char *str, char *lrm_sec, Node node)
/*;pass1_error_str */
{
/* This procedure is invoked when a type error which requires a special
* message is encountered in resolve1.
*/
if (cdebug2 > 3) TO_ERRFILE("AT PROC : pass1_error");
if (!noop_error) errmsg_str(msg, str, lrm_sec, node);
noop_error = TRUE; /* To avoid cascaded errors.*/
}
void pass1_error_l(char *msg1, char *msg2, char *lrm_sec, Node node)
/*;pass1_error_l */
{
/* This procedure is invoked when a type error which requires a special
* message is encountered in resolve1.
*/
if (cdebug2 > 3) TO_ERRFILE("AT PROC : pass1_error_l");
if (!noop_error) errmsg_l(msg1, msg2, lrm_sec, node);
noop_error = TRUE; /* To avoid cascaded errors.*/
}
char *build_full_names(Set symbols) /*;build_full_names */
{
/* builds a string containing the full names (scope.name) of all Symbols
* in the set 'symbols`
*/
Symbol sym;
Forset fs;
char *name, *name_string;
/* TBSL: this should be improved to free extra storage !! */
name_string = strjoin("","");
if (symbols == (Set)0) return(name_string);
FORSET(sym = (Symbol), symbols, fs);
name = ORIG_NAME(SCOPE_OF(sym));
/* skip internally generated block names */
if (name[0] == '#')
name = "#BLOCK.";
else
name = strjoin(name, ".");
name = strjoin(name, ORIG_NAME(sym));
name = strjoin(name, " ");
name_string = strjoin(name_string, name);
ENDFORSET(fs);
return(name_string);
}
#ifdef ERRNUM
char *phrases[] = {
"", /* 0 */
"9.16", /* 1 */
"label hidden by inner declaration", /* 2 */
"5.1", /* 3 */
"missing full declaration for %", /* 4 */
"3.8.1", /* 5 */
"Name of separately compiled unit cannot be ", /* 6 */
"an operator designator", /* 7 */
"10.1", /* 8 */
"System error: invalid node %", /* 9 */
"none", /* 10 */
"Invalid compilation unit", /* 11 */
"% does not appear in previous with clause", /* 12 */
"10.1.1", /* 13 */
"Unknown unit in with clause: %", /* 14 */
"specification and stub for % are in different scopes", /* 15 */
"7.1, 9.1", /* 16 */
"Matching specification not found for stub %", /* 17 */
"Subunit identifier not unique", /* 18 */
"10.2", /* 19 */
"stubs can only appear in the outermost scope of a ", /* 20 */
"compilation unit", /* 21 */
"cannot find stub for subunit %", /* 22 */
"% is not an exception", /* 23 */
"11.1", /* 24 */
"Duplicate exception name in handler", /* 25 */
"11.2", /* 26 */
"Duplicate OTHERS in exception part", /* 27 */
"RAISE statement not directly in exception handler", /* 28 */
"11.3", /* 29 */
"Invalid exception name", /* 30 */
" parameter not allowed for functions", /* 31 */
"6.5", /* 32 */
"Invalid use of limited type % for out parameter ", /* 33 */
"7.4.4", /* 34 */
"Separately compiled generics not supported", /* 35 */
"Premature use of incomplete or private type %", /* 36 */
"7.4.1", /* 37 */
"Type of a generic formal object of mode IN must not", /* 38 */
" be a limited type", /* 39 */
"12.1.1", /* 40 */
"Deferred constant cannot be default expression", /* 41 */
" for a generic parameter", /* 42 */
"7.4.3", /* 43 */
"Initialization not allowed for IN OUT generic parameters", /* 44 */
"OUT generic formals objects not allowed", /* 45 */
"Premature usage of type % before its full declaration", /* 46 */
"generic private type cannot have defaults for discriminants", /* 47 */
"12.1.2", /* 48 */
"invalid reference to %", /* 49 */
"8.3(16)", /* 50 */
"not a generic ", /* 51 */
"12.1, 12.3", /* 52 */
"Initializations not allowed for operators", /* 53 */
"6.7", /* 54 */
"not a generic package", /* 55 */
"12.1", /* 56 */
"Recursive instantiation not allowed", /* 57 */
"12.3", /* 58 */
"Invalid recursive instantiation", /* 59 */
"Too many actuals in generic instantiation", /* 60 */
"Positional association after named one", /* 61 */
"named associations not allowed for overloaded names", /* 62 */
"12.3(3)", /* 63 */
"Missing instantiation for generic parameter %", /* 64 */
"duplicate or erroneous named associations in instantiation", /* 65 */
"% is not an operator designator", /* 66 */
"4.5", /* 67 */
"Instantiation of a generic in parameter cannot be a ", /* 68 */
" deferred constant", /* 69 */
"Instantiation of generic in out parameter must be a variable", /* 70 */
"12.1.1, 12.3.1", /* 71 */
"Instantiation of generic in out parameter ", /* 72 */
"cannot be a conversion", /* 73 */
"12.3.1", /* 74 */
"must be a variable", /* 75 */
"instantiation of generic in out parameter % depends on a ", /* 76 */
"discriminant", /* 77 */
"invalid expression for instantiation of %", /* 78 */
"Invalid type for instantiation of %", /* 79 */
"12.3.2 - 12.3.5", /* 80 */
"Invalid use of incomplete type in instantiation of %", /* 81 */
"Invalid use of private type in instantiation of %", /* 82 */
"Expect non-limited type to instantiate %", /* 83 */
"12.3.2", /* 84 */
"discriminant mismatch in instantiation of %", /* 85 */
"Instantiation of % must be unconstrained", /* 86 */
"Usage of private type % requires instantiation with", /* 87 */
" constrained type", /* 88 */
"expect access to % to instantiate %", /* 89 */
"12.3.3", /* 90 */
"formal and actual designated types must be both ", /* 91 */
"constrained or unconstrained", /* 92 */
"Expect access type to instantiate %", /* 93 */
"12.3.5", /* 94 */
"Expect array type to instantiate %", /* 95 */
"12.3.4", /* 96 */
"Expect constrained array type to instantiate %", /* 97 */
"Expect unconstrained array type to instantiate %", /* 98 */
"Dimensions of actual type do not match those of %", /* 99 */
"index or component type mismatch in instantiation", /* 100 */
" of array type %", /* 101 */
"formal and actual array component type must be both ", /* 102 */
"invalid match for generic subprogram %", /* 103 */
"12.3.6", /* 104 */
"Expression in size spec is not static", /* 105 */
"13.2", /* 106 */
"Prefix of attribute is not type or first named subtype", /* 107 */
"Prefix of attribute is not task type or access type", /* 108 */
"expect fixed type in representation clause for SMALL", /* 109 */
"13.2(11)", /* 110 */
"expression for SMALL must be static", /* 111 */
"Identifier is not an enumeration type", /* 112 */
"13.3", /* 113 */
"Integer code is not distinct or violates ", /* 114 */
"predefined ordering relation of type", /* 115 */
"Component of aggregate in enumeration representation clause", /* 116 */
"is not static", /* 117 */
"Identifier is not a record type", /* 118 */
"13.4", /* 119 */
"Alignment clause must contain a static expression", /* 120 */
"Component % does not appear in record type", /* 121 */
"Component % already occurs in clause", /* 122 */
"Expression for component % must be static", /* 123 */
"Range for component % must be static", /* 124 */
"Invalid expression for range constraint", /* 125 */
"3.3", /* 126 */
"RANGE attribute has wrong type for constraint", /* 127 */
"invalid use of 'RANGE in expression", /* 128 */
"Format error in pragma", /* 129 */
"Appendices B,F", /* 130 */
"Unconstrained % in object declaration", /* 131 */
"3.6.1, 3.7.2", /* 132 */
"Missing initialization in constant declaration", /* 133 */
"3.2", /* 134 */
"Wrong scope for type of deferred constant", /* 135 */
"7.4", /* 136 */
"Invalid context for deferred constant", /* 137 */
"3.2, 7.4", /* 138 */
"constants of a generic type cannot be deferred", /* 139 */
"a deferred constant must be defined with a type mark", /* 140 */
"% is not a deferred constant", /* 141 */
"Invalid redeclaration of %", /* 142 */
"8.3", /* 143 */
"incorrect type in redeclaration of %", /* 144 */
"7.4, 7.4.1", /* 145 */
"Missing initialization in redeclaration of %", /* 146 */
"Initialization not available for entities of limited type", /* 147 */
"Expect literal expression in number declaration", /* 148 */
"Invalid use of discriminants", /* 149 */
"3.7.1", /* 150 */
"missing discriminants in full type declaration", /* 151 */
"3.8", /* 152 */
"Incomplete type definition must be completed ", /* 153 */
" in the same scope in which it first appears", /* 154 */
"Invalid context for redeclaration of private type", /* 155 */
"Generic private type % cannot have declaration ", /* 156 */
"in private part", /* 157 */
"Invalid use of type % before its full declaration", /* 158 */
"invalid use of type % within its definition or body", /* 159 */
"3.3,9.1", /* 160 */
"Invalid constraint on access type", /* 161 */
"Invalid subtype indication: type is already constrained", /* 162 */
"Invalid type mark in subtype indication: %", /* 163 */
"3.3, 3.6.1", /* 164 */
"premature derivation of derived or private type %", /* 165 */
"3.4, 7.4.1", /* 166 */
"discriminant mismatch in declaration", /* 167 */
"cannot obtain derived type from %", /* 168 */
"3.4", /* 169 */
"Bounds in an integer type definition must be static", /* 170 */
"3.5.4", /* 171 */
"Bounds in an integer type definition must be of some ", /* 172 */
"integer type", /* 173 */
"Expect static expression for digits", /* 174 */
"3.5.7", /* 175 */
"Expect integer expression for DIGITS", /* 176 */
"Invalid digits value in real type declaration", /* 177 */
"Precision not supported by implementation", /* 178 */
"Expect static expression for delta", /* 179 */
"Expression for delta must be of some real type", /* 180 */
"3.5.9", /* 181 */
"Missing range in Fixed type declaration", /* 182 */
"Bound in range constraint of type definition must be static", /* 183 */
"3.5.7, 3.5.9", /* 184 */
"Invalid RANGE constraint for type", /* 185 */
"Invalid constraint for type", /* 186 */
"accurracy constraint cannot depend on a generic type", /* 187 */
"value for DIGITS must be positive", /* 188 */
"value of DELTA must be positive", /* 189 */
"expect static expression for DIGITS or DELTA", /* 190 */
"3.5.7,3.5.9", /* 191 */
"Invalid constraint for scalar type", /* 192 */
"3.3.2", /* 193 */
"Constraints apply to all indices or none", /* 194 */
"3.6.1", /* 195 */
"Unconstrained element type in array declaration", /* 196 */
"Array type is already constrained", /* 197 */
"Incorrect no. of index constraints for type %", /* 198 */
"Invalid expression for index definition", /* 199 */
"expect discrete type in discrete range", /* 200 */
"Invalid index constraint for %", /* 201 */
"Incomplete specification of default values for discriminants", /* 202 */
"Discriminant must have discrete type", /* 203 */
"non conformance to previous declaration", /* 204 */
"6.3.1", /* 205 */
"Invalid self-reference in definition of %", /* 206 */
"3.1", /* 207 */
"Unconstrained % in component declaration", /* 208 */
"Invalid type for constraint", /* 209 */
"3.3, 3.7.2", /* 210 */
"Invalid constraint: Record type has no discriminant", /* 211 */
"3.7.1, 3.7.2", /* 212 */
"Positional associations after named ones", /* 213 */
"3.7.2", /* 214 */
"Too many constraints for record type", /* 215 */
"Expect discriminant names only in discriminant", /* 216 */
" constraint", /* 217 */
"Invalid discriminant name in discriminant constraint", /* 218 */
"3.7. 3.7.2", /* 219 */
"Duplicate constraint for discriminant %", /* 220 */
"discriminants in named association must have same type", /* 221 */
"3.7.2(4)", /* 222 */
"Missing constraints for discriminants", /* 223 */
"a discriminant appearing in a subtype indication ", /* 224 */
"must appear by itself", /* 225 */
"Invalid discriminant name in variant part", /* 226 */
"3.7.1, 3.7.3", /* 227 */
"invalid redeclaration of % in private part", /* 228 */
"8.2(b)", /* 229 */
"invalid redeclaration of %", /* 230 */
"3.8, 8.2", /* 231 */
"Invalid argument for attribute SIZE", /* 232 */
"Annex A", /* 233 */
"bounds of range for membership op must be scalar", /* 234 */
"4.4", /* 235 */
"Invalid use of attribute BASE", /* 236 */
"ambiguous entry name for attribute", /* 237 */
"9.9", /* 238 */
"% has incorrect type. Expect %", /* 239 */
"invalid reading of out parameter %", /* 240 */
"6.2", /* 241 */
"premature use of deferred constant before its", /* 242 */
"full declaration", /* 243 */
"invalid context for integer literal", /* 244 */
"4.6(15)", /* 245 */
"invalid context for real literal", /* 246 */
"Incorrect type for string literal. Expect %", /* 247 */
"Invalid context for NULL", /* 248 */
"3.8.2", /* 249 */
"No aggregate available for type %", /* 250 */
"4.2", /* 251 */
"Context of allocator must be an access type", /* 252 */
"4.8, 3.8", /* 253 */
"Invalid type for allocator. Expect %", /* 254 */
"3.8, 4.8", /* 255 */
"ambiguous expression for conversion", /* 256 */
"4.6", /* 257 */
"Invalid array conversion", /* 258 */
"cannot convert to %", /* 259 */
"Invalid universal expression in", /* 260 */
" discrete range", /* 261 */
"Incorrect type for expression. Expect %", /* 262 */
"Second argument of VAL must be of some integer type", /* 263 */
"ambiguous argument for attribute VAL", /* 264 */
"attribute must apply to selected component", /* 265 */
"13.7.2", /* 266 */
"Missing explicit conversion from universal fixed value", /* 267 */
"3.5.9, 4.5.5", /* 268 */
"system error: strange op type %", /* 269 */
"Missing explicit conversion from universal_real value ", /* 270 */
"4.5.6", /* 271 */
"Invalid context for mixed mode operation", /* 272 */
"4.5.5, 4.10", /* 273 */
"Missing explicit conversion from ", /* 274 */
"universal_fixed value ", /* 275 */
"4.5.5", /* 276 */
"% not available on a limited type", /* 277 */
"7.4.2", /* 278 */
"No positional arguments can appear after named ones", /* 279 */
"6.4", /* 280 */
"Invalid format for argument association", /* 281 */
"% actual parameter no. % in call is not a variable", /* 282 */
"6.4.1", /* 283 */
"A null range in array aggregate must be the only choice", /* 284 */
"4.3.2.(3)", /* 285 */
"Component is not allowed to be specified more than once", /* 286 */
"4.3.(6)", /* 287 */
"Missing association in array aggregate", /* 288 */
"aggregates not available for limited type %", /* 289 */
"Invalid context for aggregate", /* 290 */
"OTHERS choice not allowed in this context", /* 291 */
"4.3.2", /* 292 */
"invalid type mark in array aggregate", /* 293 */
"4.3", /* 294 */
"Non static choice in array aggregate must be the only choice", /* 295 */
"OTHERS must be the last aggregate component", /* 296 */
"In a positional aggregate only named association ", /* 297 */
"allowed is OTHERS", /* 298 */
"Invalid context for OTHERS and named associations", /* 299 */
"4.3.2(6)", /* 300 */
"Invalid use of literal in aggregate", /* 301 */
"Expect aggregate for component of multidimensional aggregate", /* 302 */
"characters in a string literal must be directly visible", /* 303 */
"4.2(3)", /* 304 */
"Component type of context is not a character type", /* 305 */
"OTHERS must appear alone and last in a choice list", /* 306 */
"No value supplied for discriminant %", /* 307 */
"4.3.1", /* 308 */
"Value for discriminant % must be static", /* 309 */
"Undefined component name", /* 310 */
"Duplicate value for component in aggregate", /* 311 */
"choice in record aggregate must be selector name", /* 312 */
"Range choice not allowed in record aggregate", /* 313 */
"OTHERS choice must represent at least ", /* 314 */
"one component", /* 315 */
"OTHERS expression incompatible with %", /* 316 */
"components on a choice list must have same type", /* 317 */
"Too many components for record aggregate", /* 318 */
"No value supplied for component %", /* 319 */
"expect task name ", /* 320 */
"9.5", /* 321 */
"invalid use of task type outside of its own body", /* 322 */
"9.1", /* 323 */
"use of SYSTEM.ADDRESS requires presence of package SYSTEM", /* 324 */
"13.7.2, Annex A", /* 325 */
"Undefined attribute: %", /* 326 */
"Ambiguous call to one of %", /* 327 */
"6.6, 8.3", /* 328 */
"Ambiguous operands for %", /* 329 */
"6.7, 8.3", /* 330 */
"Ambiguous literal: %", /* 331 */
"3.5.1, 4.7, 8.3", /* 332 */
"ambiguous expression", /* 333 */
"8.2, 8.3", /* 334 */
"TEXT_IO not instantiated nor defined for type", /* 335 */
"8.4, 14.4", /* 336 */
"invalid types for %", /* 337 */
"invalid argument list for %", /* 338 */
"no instance of % has type %", /* 339 */
"3.5.1", /* 340 */
"Expect expression to yield type %", /* 341 */
"Unexpected range in slice", /* 342 */
"", /* 343 */
"assignment not available on a limited type", /* 344 */
"incompatible types for assignment", /* 345 */
"5.2", /* 346 */
"ambiguous types for assigment", /* 347 */
"left-hand side in assignment is not a variable", /* 348 */
"Case expression not of discrete type", /* 349 */
"3.7.3, 5.4", /* 350 */
"Case expression cannot be of a generic type", /* 351 */
"5.4", /* 352 */
"Choice must have type %", /* 353 */
"Case choice not static", /* 354 */
"choice value(s) not in range of static ", /* 355 */
"subtype of case expression", /* 356 */
"Duplicate choice value(s)", /* 357 */
"Missing OTHERS choice", /* 358 */
"EXIT statement not in loop", /* 359 */
"5.7", /* 360 */
"Invalid loop label in EXIT: %", /* 361 */
"5.5, 5.7", /* 362 */
"attempt to exit from %", /* 363 */
"invalid context for RETURN statement", /* 364 */
"5.8", /* 365 */
"Procedure cannot return value", /* 366 */
"Function must return value", /* 367 */
"Duplicate identifier for label", /* 368 */
"target of goto is not a label", /* 369 */
"5.9", /* 370 */
"target of goto is not a reachable label", /* 371 */
"attempt to jump out of %", /* 372 */
"Incorrect no. of arguments for operator %", /* 373 */
"Invalid argument profile for \"=\"", /* 374 */
" /= cannot be given an explicit definition", /* 375 */
"library subprograms cannot be overloaded", /* 376 */
"10.1(10)", /* 377 */
"Missing RETURN statement in function body", /* 378 */
"Invalid use of incomplete type %", /* 379 */
"default initialization only allowed for IN parameters", /* 380 */
"6.1", /* 381 */
"functions cannot have % parameters ", /* 382 */
"Declaration does not match previous specification", /* 383 */
"Invalid statement: not procedure or entry call", /* 384 */
"Invalid procedure or entry call", /* 385 */
"6.5, 9.5", /* 386 */
"Invalid statement", /* 387 */
"Invalid call", /* 388 */
"Redeclaration of identifier %", /* 389 */
"8.3, 8.4", /* 390 */
"invalid declaration of homograph %", /* 391 */
"8.3(17)", /* 392 */
"= can only be defined for limited types", /* 393 */
"Specification and body are in different scopes", /* 394 */
"Matching specification not found for body %", /* 395 */
"Invalid context for private declaration", /* 396 */
"7.4, 12.1.2", /* 397 */
"Invalid redeclaration ", /* 398 */
"8.2", /* 399 */
"invalid use of type % before its full declaration", /* 400 */
"3.8.1, 7.4.1", /* 401 */
"Private type requires full declaration with non limited type", /* 402 */
"Private type cannot be fully declared as an unconstrained", /* 403 */
" array type", /* 404 */
"Private type without discriminants cannot be given ", /* 405 */
"full declaration with discriminants", /* 406 */
"A private type with discriminants must be given ", /* 407 */
"full declaration with a discriminated type", /* 408 */
"Use of type for an OUT parameter requires full ", /* 409 */
"declaration with non limited type", /* 410 */
"recursive definition of private type %", /* 411 */
"7.2", /* 412 */
"Missing full declaration in private part for %", /* 413 */
"Redeclaration of % in private part", /* 414 */
"7.2 , 7.4.1", /* 415 */
"Missing body for % %.%", /* 416 */
"7.3", /* 417 */
"Missing full type declaration for incomplete type %", /* 418 */
"Cannot find package specification for %", /* 419 */
"% is not supported in current implementation", /* 420 */
"Invalid type mark ", /* 421 */
"identifier undeclared or not visible %", /* 422 */
"Invalid reference to %", /* 423 */
"Ambiguous identifier. Could be one of: %", /* 424 */
"premature usage of %", /* 425 */
"% not declared in %", /* 426 */
"4.1.3, 8.3", /* 427 */
"Invalid prefix in qualified name", /* 428 */
"4.1.3", /* 429 */
"Ambiguous name in selected component", /* 430 */
"duplicate identifier: %", /* 431 */
"Expect identifier in renaming", /* 432 */
"8.5", /* 433 */
"not an exception", /* 434 */
"not a package", /* 435 */
"renaming with = can only rename an equality operator", /* 436 */
"invalid renaming", /* 437 */
"function spec. does not match attribute", /* 438 */
"8.5,12.3.6", /* 439 */
"attribute cannot be renamed as function", /* 440 */
"existence of object % depends on a discriminant ", /* 441 */
"ambiguous subprogram name: %", /* 442 */
"No match for subprogam specification ", /* 443 */
"parameter modes do not match", /* 444 */
"8.5(8)", /* 445 */
"ambiguous or invalid entry name in renaming", /* 446 */
"invalid index on entry name (not entry family)", /* 447 */
"Cannot rename entry family as a whole", /* 448 */
"Renamed entity must be an object", /* 449 */
"Duplicate declaration of %", /* 450 */
"undeclared package name %", /* 451 */
"8.4, 10.1", /* 452 */
"% is not the name of a USEable package", /* 453 */
"8.4", /* 454 */
"Accept statements can only appear in tasks", /* 455 */
"Undefined entry name in ACCEPT ", /* 456 */
"invalid index on entry (not entry family)", /* 457 */
"Entry name in ACCEPT statement does not match any entry", /* 458 */
"Missing index for entry family.", /* 459 */
"Invalid entry name in ACCEPT", /* 460 */
"An accept_statement cannot appear within an ACCEPT for", /* 461 */
" the same entry", /* 462 */
"Call to member of entry family requires one index", /* 463 */
"9.5, 3.6.1", /* 464 */
"invalid index. % is not an entry family", /* 465 */
"context requires entry name ", /* 466 */
"9.7.2, 7.3", /* 467 */
"Invalid entry name", /* 468 */
"Missing index in name of member of entry family", /* 469 */
"Member of entry family requires a single index ", /* 470 */
"Undefined entry name in task : ", /* 471 */
"ambiguous entry family name: %", /* 472 */
"Invalid context for TERMINATE alternative", /* 473 */
"9.7.1", /* 474 */
" expect task name is ABORT statement", /* 475 */
"9.10", /* 476 */
"Invalid task type in ABORT statement", /* 477 */
"attribute cannot be applied to unconstrained array type", /* 478 */
"3.6.2", /* 479 */
""};
/* errmsg(text, text, node) -> errmsgn(enum, enum, node) */
void errmsgn(int en, int lrm, Node node) /*;errmsgn*/
{
errmsg(phrases[en], phrases[lrm], node);
}
void id_errmsgn(int msg, Symbol name, int lrm, Node node) /*;id_errmsgn*/
{
errmsg_id(phrases[msg], name, phrases[lrm], node);
}
void id_id_errmsgn(int msg, Symbol name1, Symbol name2, int lrm, Node node)
/*;id_id_errmsgn*/
{
errmsg_id_id(phrases[msg], name1, name2, phrases[lrm], node);
}
void id_type_errmsgn(int msg, Symbol name, Symbol type, int lrm, Node node)
/*;id_type_errmsgn*/
{
errmsg_id_type(phrases[msg], name, type, phrases[lrm], node);
}
void l_errmsgn(int msg1, int msg2, int lrm, Node node) /*;l_errmsgn*/
{
char *strjoin();
errmsg(strjoin(phrases[msg1], phrases[msg2]), phrases[lrm], node);
}
void l1_errmsgn(char *msg1, int msg2, int lrm, Node node) /*;l1_errmsgn*/
{
char *strjoin();
errmsg(strjoin(msg1, phrases[msg2]), phrases[lrm], node);
}
void l2_errmsgn(int msg1, char *msg2, int lrm, Node node) /*;l2_errmsgn*/
{
char *strjoin();
errmsg(strjoin(phrases[msg1], msg2), phrases[lrm], node);
}
void l_id_errmsgn(int msg1, int msg2, Symbol name, int lrm, Node node)
/*;l_id_errmsgn*/
{
char *strjoin();
errmsg_id(strjoin(phrases[msg1], phrases[msg2]), name, phrases[lrm], node);
}
void l_str_errmsgn(int msg1, int msg2, char *str, int lrm, Node node)
/*;l_str_errmsgn*/
{
errmsg_str(strjoin(phrases[msg1], phrases[msg2]), str, phrases[lrm], node);
}
void nat_errmsgn(int msg, Symbol sym, int lrm, Node node) /*;nat_errmsgn*/
{
errmsg_nat(phrases[msg], sym, phrases[lrm], node);
}
void nat_id_str_errmsgn(int msg, Symbol sym, Symbol name, char *str, int lrm,
Node node) /*;nat_id_str_errmsgn*/
{
errmsg_nat_id_str(phrases[msg], sym, name, str, phrases[lrm], node);
}
void nval_errmsgn(int msg, Node name, int lrm, Node node) /*;nval_errmsgn*/
{
errmsg_nval(phrases[msg], name, phrases[lrm], node);
}
void str_errmsgn(int msg, char *str, int lrm, Node node) /*;str_errmsgn*/
{
errmsg_str(phrases[msg], str, phrases[lrm], node);
}
void str_id_errmsgn(int msg, char *str, Symbol name, int lrm, Node node)
/*;str_id_errmsgn*/
{
errmsg_str_id(phrases[msg], str, name, phrases[lrm], node);
}
void str_num_errmsgn(int msg, char *str, int i, int lrm, Node node)
/*;str_num_errmsgn*/
{
errmsg_str_num(phrases[msg], str, i, phrases[lrm], node);
}
void type_errmsgn(int msg, Symbol type, int lrm, Node node) /*;type_errmsgn*/
{
errmsg_type(phrases[msg], type, phrases[lrm], node);
}
void type1_errmsgn(char *msg, Symbol type, int lrm, Node node)
/*;type1_errmsgn*/
{
errmsg_type(msg, type, phrases[lrm], node);
}
#endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.