Commit a0c9290c authored by Lev Walkin's avatar Lev Walkin

identifier name clash

parent ef4a32bd
...@@ -36,17 +36,28 @@ static int ...@@ -36,17 +36,28 @@ static int
asn1f_fix_bit_string_type(arg_t *arg) { asn1f_fix_bit_string_type(arg_t *arg) {
asn1p_expr_t *expr = arg->expr; asn1p_expr_t *expr = arg->expr;
asn1p_expr_t *v; asn1p_expr_t *v;
int r_value = 0;
int ret;
TQ_FOR(v, &(expr->members), next) { 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) { if(v->expr_type != A1TC_UNIVERVAL) {
FATAL("BIT STRING value at line %d " FATAL("BIT STRING value at line %d "
"is not an identifier", "is not an identifier", v->_lineno);
v->_lineno);
return -1; return -1;
} }
} }
return 0; return r_value;
} }
static int static int
......
...@@ -34,8 +34,7 @@ asn1f_fix_enum(arg_t *arg) { ...@@ -34,8 +34,7 @@ asn1f_fix_enum(arg_t *arg) {
*/ */
if(ev->expr_type == A1TC_EXTENSIBLE) { if(ev->expr_type == A1TC_EXTENSIBLE) {
if(ext_marker) { if(ext_marker) {
arg->eh(1, FATAL("Enumeration %s at line %d: "
"Enumeration %s at line %d: "
"Second extension marker is not allowed", "Second extension marker is not allowed",
expr->Identifier, expr->Identifier,
ev->_lineno); ev->_lineno);
......
...@@ -38,20 +38,17 @@ asn1f_fix_integer(arg_t *arg) { ...@@ -38,20 +38,17 @@ asn1f_fix_integer(arg_t *arg) {
* Found "...", check correctness. * Found "...", check correctness.
*/ */
if(iv->expr_type == A1TC_EXTENSIBLE) { if(iv->expr_type == A1TC_EXTENSIBLE) {
arg->eh(1, FATAL("INTEGER %s at line %d: "
"INTEGER %s at line %d: "
"Extension marker is not allowed", "Extension marker is not allowed",
expr->Identifier, expr->Identifier,
iv->_lineno iv->_lineno);
);
rvalue = -1; rvalue = -1;
continue; continue;
} }
if(iv->Identifier == NULL if(iv->Identifier == NULL
|| iv->expr_type != A1TC_UNIVERVAL) { || iv->expr_type != A1TC_UNIVERVAL) {
arg->eh(1, FATAL("INTEGER %s at line %d: "
"INTEGER %s at line %d: "
"Unsupported enumeration element %s", "Unsupported enumeration element %s",
expr->Identifier, expr->Identifier,
iv->_lineno, iv->_lineno,
...@@ -62,8 +59,7 @@ asn1f_fix_integer(arg_t *arg) { ...@@ -62,8 +59,7 @@ asn1f_fix_integer(arg_t *arg) {
} }
if(iv->value == NULL) { if(iv->value == NULL) {
arg->eh(1, FATAL("INTEGER %s at line %d: "
"INTEGER %s at line %d: "
"Value for the identifier %s " "Value for the identifier %s "
"must be set explicitly", "must be set explicitly",
expr->Identifier, expr->Identifier,
...@@ -84,8 +80,7 @@ asn1f_fix_integer(arg_t *arg) { ...@@ -84,8 +80,7 @@ asn1f_fix_integer(arg_t *arg) {
} }
if(iv->value->type != ATV_INTEGER) { if(iv->value->type != ATV_INTEGER) {
arg->eh(1, FATAL("INTEGER %s at line %d: "
"INTEGER %s at line %d: "
"Value for the identifier %s " "Value for the identifier %s "
"is not compatible with INTEGER type", "is not compatible with INTEGER type",
expr->Identifier, expr->Identifier,
......
...@@ -294,8 +294,7 @@ asn1f_check_unique_expr_child(arg_t *arg, asn1p_expr_t *child, ...@@ -294,8 +294,7 @@ asn1f_check_unique_expr_child(arg_t *arg, asn1p_expr_t *child,
msg = opt_compare msg = opt_compare
?"Expressions clash" ?"Expressions clash"
:"Identifiers name clash"; :"Identifiers name clash";
arg->eh(1, FATAL("%s: "
"%s: "
"\"%s\" at line %d has similar %s with " "\"%s\" at line %d has similar %s with "
"\"%s\" at line %d", "\"%s\" at line %d",
msg, msg,
......
-- 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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment