On Thu, 25 Jul 2024 23:11:15 GMT, Chen Liang <li...@openjdk.org> wrote:
> Removes 6 `AccessFlags` factories that do not take class-file versions as its > arguments. > > `AccessFlags` is a wrapper around a bit mask to support modifier streaming in > ClassFile API. It additionally supports advanced validation based on location. > > However, as class file versions evolve, we may also need a class file version > argument to ensure that the flags are correctly constructed. For example, a > pre-valhalla class modifier without `ACC_SUPER` should not be interpreted as > a value class. The current factories cannot find good default class file > versions, and if they always assume latest, they will fail in this scenario. > > As a result, we should remove these 6 factories; note that users can still > set the flags via `XxxBuilder::withFlags` with either `int` or > `AccessFlag...` flags. In contrast, these builder APIs can fetch the > previously-passed class file versions, and correctly validate or interpret > these flags. Same story goes for parsing, which can also construct the right > flags with available information. > > This enables us to add methods to interpret the logical flags with > version-specific information. If there's need, we can always add a new > `AccessFlags.of(int, AccessFlag.Location, ClassFileFormatVersion)` factory, > given the flexibility from this removal. This pull request has now been integrated. Changeset: 93c19ac7 Author: Chen Liang <li...@openjdk.org> URL: https://git.openjdk.org/jdk/commit/93c19ac73c2feb8d6191bc5da98b4a9c8e2b5590 Stats: 211 lines in 21 files changed: 71 ins; 80 del; 60 mod 8337219: AccessFlags factories do not require necessary arguments Reviewed-by: asotona ------------- PR: https://git.openjdk.org/jdk/pull/20341