mirror of https://gerrit.osmocom.org/asn1c
identifier name clash
This commit is contained in:
parent
ef4a32bd3f
commit
a0c9290c01
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue