identifier name clash

This commit is contained in:
Lev Walkin 2006-08-28 02:24:24 +00:00
parent ef4a32bd3f
commit a0c9290c01
5 changed files with 37 additions and 17 deletions

View File

@ -36,17 +36,28 @@ static int
asn1f_fix_bit_string_type(arg_t *arg) {
asn1p_expr_t *expr = arg->expr;
asn1p_expr_t *v;
int r_value = 0;
int ret;
TQ_FOR(v, &(expr->members), next) {
/* Check identifier uniqueness as per 21.4 */
ret = asn1f_check_unique_expr_child(arg, v, 0);
RET2RVAL(ret, r_value);
if(v->expr_type == A1TC_EXTENSIBLE) {
FATAL("Extension marker (...) is not allowed "
"as a BIT STRING NamedBit at line %d ",
v->_lineno);
return -1;
}
if(v->expr_type != A1TC_UNIVERVAL) {
FATAL("BIT STRING value at line %d "
"is not an identifier",
v->_lineno);
"is not an identifier", v->_lineno);
return -1;
}
}
return 0;
return r_value;
}
static int

View File

@ -34,8 +34,7 @@ asn1f_fix_enum(arg_t *arg) {
*/
if(ev->expr_type == A1TC_EXTENSIBLE) {
if(ext_marker) {
arg->eh(1,
"Enumeration %s at line %d: "
FATAL("Enumeration %s at line %d: "
"Second extension marker is not allowed",
expr->Identifier,
ev->_lineno);

View File

@ -38,20 +38,17 @@ asn1f_fix_integer(arg_t *arg) {
* Found "...", check correctness.
*/
if(iv->expr_type == A1TC_EXTENSIBLE) {
arg->eh(1,
"INTEGER %s at line %d: "
FATAL("INTEGER %s at line %d: "
"Extension marker is not allowed",
expr->Identifier,
iv->_lineno
);
iv->_lineno);
rvalue = -1;
continue;
}
if(iv->Identifier == NULL
|| iv->expr_type != A1TC_UNIVERVAL) {
arg->eh(1,
"INTEGER %s at line %d: "
FATAL("INTEGER %s at line %d: "
"Unsupported enumeration element %s",
expr->Identifier,
iv->_lineno,
@ -62,8 +59,7 @@ asn1f_fix_integer(arg_t *arg) {
}
if(iv->value == NULL) {
arg->eh(1,
"INTEGER %s at line %d: "
FATAL("INTEGER %s at line %d: "
"Value for the identifier %s "
"must be set explicitly",
expr->Identifier,
@ -84,8 +80,7 @@ asn1f_fix_integer(arg_t *arg) {
}
if(iv->value->type != ATV_INTEGER) {
arg->eh(1,
"INTEGER %s at line %d: "
FATAL("INTEGER %s at line %d: "
"Value for the identifier %s "
"is not compatible with INTEGER type",
expr->Identifier,

View File

@ -294,8 +294,7 @@ asn1f_check_unique_expr_child(arg_t *arg, asn1p_expr_t *child,
msg = opt_compare
?"Expressions clash"
:"Identifiers name clash";
arg->eh(1,
"%s: "
FATAL("%s: "
"\"%s\" at line %d has similar %s with "
"\"%s\" at line %d",
msg,

View File

@ -0,0 +1,16 @@
-- SE: Semantic error
-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
-- .spelio.software.asn1c.test (9363.1.5.1)
-- .113
ModuleBitStringExtensibility
{ iso org(3) dod(6) internet (1) private(4) enterprise(1)
spelio(9363) software(1) asn1c(5) test(1) 113 }
DEFINITIONS ::=
BEGIN
T ::= BIT STRING { one(1), one(2) }
END