[code-reflection] RFR: Implement bitwise/shift assignment operations [v2]
Hannes Greule
hgreule at openjdk.org
Thu May 16 07:34:36 UTC 2024
On Wed, 15 May 2024 16:15:28 GMT, Paul Sandoz <psandoz at openjdk.org> wrote:
>> Hannes Greule has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Fix missed change from rebase
>
> test/jdk/java/lang/reflect/code/CoreBinaryOpsTest.java line 66:
>
>> 64:
>> 65: @CodeReflection
>> 66: @SupportedTypes(types = {int.class, long.class, byte.class, short.class, char.class, boolean.class})
>
> Alas we cannot have constant array values, hence the duplication. But, we can use enums:
>
> enum Types {
> INTEGRAL_BOOLEAN(
> new Class<?>[]{int.class, long.class, byte.class, short.class, char.class, boolean.class}),
> INTEGRAL_FLOATING_POINT(
> new Class<?>[]{int.class, long.class, byte.class, short.class, char.class, float.class, double.class}
> );
>
> final Class<?>[] types;
>
> PrimitiveTypeList(Class<?>[] types) {
> this.types = types;
> }
> }
>
> @Retention(RetentionPolicy.RUNTIME)
> @Target(ElementType.METHOD)
> @interface SupportedTypes {
> PrimitiveTypeList[] value();
> }
>
> ...
>
> @CodeReflection
> @SupportedTypes(Types.INTEGRAL_BOOLEAN)
> static int add(int left, int right) {
> return left + right;
> }
>
> Up to you.
Good idea, done!
-------------
PR Review Comment: https://git.openjdk.org/babylon/pull/77#discussion_r1602769035
More information about the babylon-dev
mailing list