zserio icon indicating copy to clipboard operation
zserio copied to clipboard

Review range checking in Java

Open Mi-La opened this issue 7 years ago • 5 comments

Currently in Java we do range checking immediately in field setters. However it can lead to exception for dependent fields.

struct Test
{
    int8 numBits;
    bit<numBits> bitField; // exception when setting bitField member before numBits member
};

Mi-La avatar Dec 04 '18 10:12 Mi-La

Please have a look to python emitter at the solution for range check, array length check, offset check and constraint check.

mikir avatar Dec 10 '18 12:12 mikir

Also consider to implement range check for array elements.

mikir avatar Dec 10 '18 14:12 mikir

Note that in C++ emitters (both c++98 and c++11) the array range check is already implemented. Consider if we can move the iterating functionality to runtime.

Mi-La avatar Aug 15 '19 16:08 Mi-La

Review range checking template data as well. Please note that range check data are used by bitmask template data as well.

mikir avatar Jan 18 '22 07:01 mikir

Due to this issue we have to exclude language/builtin_types tests from extra arguments check with range check code enabled. DynamicBitFieldLengthBoundsTest added in #513 doesn't work with range check code enabled since Java does range checking immediately in setters.

Mi-La avatar Jun 19 '24 06:06 Mi-La