Skip to content

PBJ processes document comments (i.e. /**...*/) as tokens #319

@jsync-swirlds

Description

@jsync-swirlds

Description

PBJ treats document comments (/**...*/) as the start of a token (because it wants to make them Javadoc), and if the comment is not followed by a field or message, that next item (be it a keyword like reserved or the end of a block }) is treated as a field or message, so it would look for a message type reserved or hoist a oneof to a field (both of which will fail). In some cases that will even cause a message to be processed completely incorrectly, but still appear to compile, so it's another subtly concerning bug.

How to Reproduce

Compile the following protobuf:

message DocumentCommentTest {
    /**
     * This will fail "cannot find type [reserved]".
     */
    reserved 5;

    /**
     * This is fine.
     */
    uint32 number = 1;

    /**
     * oneof with a commented field; this will fail compilation
     * "OneofFieldContext.fieldNumber is null"
     */
    oneof sample {
        /**
         * A text field
         */
        string text = 2;

        /**
         * A flag indicating FCOJ futures bids are enabled.
         */
        // removed for now. 
        // bool futures_enabled = 3;
    }
}

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions