IDL 4.3 RTF Avatar
  1. OMG Issue

IDL43 — current IDL4 grammar breaks backward compatibility with respect to short hand notations

  • Key: IDL43-30
  • Status: open  
  • Source: ADLINK Technology Ltd ( Erik Hendriks)
  • Summary:

    In section it is explained that an annotation may be used in a shortened form in the following conditions:

    • There is no member or only one member with a default value.
      • In that it is allowed to apply the annotation by using just the annotation name.
    • There is only one member.
      • In that case you may apply the name of the annotation and the value of its member, without explicitly mentioning the member name and the equals sign.

    However, the second bullet may break backward compatibility when annotations get extended with additional members in future spec releases. Consider the following example:

    bitmask DataRepresentationMask {
       @position(0) XCDR, 
       @position(1) XML,
       @posiiton(2) XCDR2
    @annotation data_representation {
        DataRepresentationKind allowed_kinds;

    Now to annotate an IDL type to support only the XCDR2 annotation, I can apply a shortened annotation like this:

    @data_representation(XCDR | XCDR2)
    struct Foo {
       long my_long;

    Now suppose in a future version of the spec, we extend the @data_representation annotation with an additional field to specify the supported endianness, like this:

    enum EndiannessKind {
    @annotation data_representation {
        DataRepresentationKind allowed_kinds;
        EndiannessKind endianness;

    In this case, the addition of the new member suddenly invalidates existing IDL files that use the shorthand notation.

    What I want to propose is to allow the shorthand notation to be used for implicitly referring to the first available member. That is fully compatible with the current rule, but will also still apply when new members are added afterwards.

  • Reported: IDL 4.2 — Tue, 12 Feb 2019 16:31 GMT
  • Updated: Wed, 26 Jun 2019 11:34 GMT