Record Class SuperTypeParamRewrite

java.lang.Object
java.lang.Record
io.papermc.asm.rules.method.params.SuperTypeParamRewrite
Record Components:
owners - owners of the methods to change
targetedMethodMatcher - method matcher to find methods with (target is the type to be found in bytecode that needs to be transformed)
newParamType - the parameter type that is valid for existing method
All Implemented Interfaces:
MethodRewriteRule, OwnableMethodRewriteRule, OwnableMethodRewriteRule.Filtered, OwnableRewriteRule, RewriteRule

public record SuperTypeParamRewrite(Set<ClassDesc> owners, TargetedMethodMatcher targetedMethodMatcher, ClassDesc newParamType) extends Record implements OwnableMethodRewriteRule.Filtered
Changes a parameter type to a super type. This isn't a compile break, but it is an ABI break. We just change the offending parameter in the descriptor and move on.
  • Constructor Details

    • SuperTypeParamRewrite

      public SuperTypeParamRewrite(Set<ClassDesc> owners, TargetedMethodMatcher targetedMethodMatcher, ClassDesc newParamType)
      Creates an instance of a SuperTypeParamRewrite record class.
      Parameters:
      owners - the value for the owners record component
      targetedMethodMatcher - the value for the targetedMethodMatcher record component
      newParamType - the value for the newParamType record component
  • Method Details

    • methodMatcher

      public MethodMatcher methodMatcher()
      Description copied from interface: OwnableMethodRewriteRule.Filtered
      A matcher to test against method names and descriptors.
      Specified by:
      methodMatcher in interface OwnableMethodRewriteRule.Filtered
      Returns:
      the method matcher
    • oldParamType

      public ClassDesc oldParamType()
    • rewrite

      public MethodRewrite<?> rewrite(ClassProcessingContext context, boolean isInvokeDynamic, int opcode, ClassDesc owner, String name, MethodTypeDesc descriptor, boolean isInterface)
      Description copied from interface: MethodRewriteRule
      Creates a MethodRewrite which will be applied to the processed bytecode.
      Specified by:
      rewrite in interface MethodRewriteRule
      Parameters:
      context - the current context
      isInvokeDynamic - if this is in an invokedynamic instruction
      opcode - the opcode of the invoke instruction or the invokedynamic handle tag
      owner - the owner of the invoke method or the owner of the invokedynamic handle
      name - the name of the invoke method or the name of the invokedynamic handle
      descriptor - the descriptor of the invoke method or the descriptor of the invokedynamic handle
      isInterface - if the method is an interface method
      Returns:
      the rewrite or null if no rewrite should be applied
    • toString

      public final String toString()
      Returns a string representation of this record class. The representation contains the name of the class, followed by the name and value of each of the record components.
      Specified by:
      toString in class Record
      Returns:
      a string representation of this object
    • hashCode

      public final int hashCode()
      Returns a hash code value for this object. The value is derived from the hash code of each of the record components.
      Specified by:
      hashCode in class Record
      Returns:
      a hash code value for this object
    • equals

      public final boolean equals(Object o)
      Indicates whether some other object is "equal to" this one. The objects are equal if the other object is of the same class and if all the record components are equal. All components in this record class are compared with Objects::equals(Object,Object).
      Specified by:
      equals in class Record
      Parameters:
      o - the object with which to compare
      Returns:
      true if this object is the same as the o argument; false otherwise.
    • owners

      public Set<ClassDesc> owners()
      Returns the value of the owners record component.
      Specified by:
      owners in interface OwnableRewriteRule
      Returns:
      the value of the owners record component
    • targetedMethodMatcher

      public TargetedMethodMatcher targetedMethodMatcher()
      Returns the value of the targetedMethodMatcher record component.
      Returns:
      the value of the targetedMethodMatcher record component
    • newParamType

      public ClassDesc newParamType()
      Returns the value of the newParamType record component.
      Returns:
      the value of the newParamType record component