JVM IR: do not use JvmMethodParameterKind

This commit is contained in:
Alexander Udalov
2022-02-04 15:48:16 +01:00
committed by Space Team
parent d9bc714992
commit 8ad38db2ad
5 changed files with 19 additions and 16 deletions
@@ -182,10 +182,10 @@ public class BothSignatureWriter extends JvmSignatureWriter {
}
@Override
public void writeParameterType(JvmMethodParameterKind parameterKind) {
public void writeParameterType(@NotNull JvmMethodParameterKind parameterKind, boolean isSkippedInGenericSignature) {
// This magic mimics the behavior of javac that enum constructor have these synthetic parameters in erased signature, but doesn't
// have them in generic signature. IDEA, javac and their friends rely on this behavior.
if (parameterKind.isSkippedInGenericSignature()) {
if (isSkippedInGenericSignature) {
generic = true;
// pushing dummy visitor, because we don't want these parameters to appear in generic JVM signature
@@ -194,7 +194,7 @@ public class BothSignatureWriter extends JvmSignatureWriter {
else {
push(signatureVisitor().visitParameterType());
}
super.writeParameterType(parameterKind);
super.writeParameterType(parameterKind, isSkippedInGenericSignature);
}
@Override
@@ -98,7 +98,11 @@ public class JvmSignatureWriter extends JvmDescriptorTypeWriter<Type> {
clearCurrentType();
}
public void writeParameterType(JvmMethodParameterKind parameterKind) {
public void writeParameterType(@NotNull JvmMethodParameterKind parameterKind) {
writeParameterType(parameterKind, parameterKind.isSkippedInGenericSignature());
}
public void writeParameterType(@NotNull JvmMethodParameterKind parameterKind, boolean isSkippedInGenericSignature) {
currentParameterKind = parameterKind;
}