diff --git a/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java b/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java index 9498b49..4d7fa23 100644 --- a/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java +++ b/src/main/java/com/eprosima/idl/parser/typecode/MemberedTypeCode.java @@ -25,6 +25,7 @@ import com.eprosima.idl.parser.exception.ParseException; import com.eprosima.idl.parser.exception.RuntimeGenerationException; import com.eprosima.idl.parser.tree.Annotation; +import com.eprosima.idl.parser.typecode.StructTypeCode; public abstract class MemberedTypeCode extends TypeCode { @@ -246,6 +247,11 @@ public boolean addMember( throw new ParseException(null, "Error in member " + member.getName() + ": @" + Annotation.key_str + " and @" + Annotation.optional_str + " annotations are incompatible."); } + if (member.isAnnotationKey() && this instanceof StructTypeCode && null != ((StructTypeCode)this).getInheritance()) + { + throw new ParseException(null, "Error in member " + member.getName() + + ": @" + Annotation.key_str + " cannot be used in a derived type."); + } if (member.isAnnotationId() && member.isAnnotationHashid()) { throw new ParseException(null, "Error in member " + member.getName() +