Deduplicate tags to unique jni::Tag<...> types #12
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Convert Tag types to
jni::Tag<char...>
types before instantiating the Object/Class/Method/Constructor/StaticMethod/Field/StaticField types. This removes a source of error where two Tag types returning the same string yielded incompatible Object/... types. Instead of templating these by Tag, we generate ajni::Tag<char...>
type likejni::Type<'j', 'a', 'v', 'a', '/', 'l', 'a', 'n', 'g', '/', 'O', 'b', 'j', 'e', 'c', 't'>
, which means that two distinct Tags produce the identical type if the returned string is identical.The primary change is the rename from
Object
toTypedObject
, with a type alias fromObject
=>TypedObject
. Then, I changedTypeObject
to only have a specialization when theTagType
is ajni::Tag
, and the type alias automatically converts the tag to aType
type. Same applies to the other entities.This means that it should be largely backwards-compatible.