Parameter names of Java methods: store enum field instead of two booleans
This commit is contained in:
+2
-4
@@ -37,11 +37,9 @@ import org.jetbrains.kotlin.load.java.descriptors.SamAdapterDescriptor;
|
|||||||
@NotNull Kind kind,
|
@NotNull Kind kind,
|
||||||
@NotNull JavaMethodDescriptor declaration
|
@NotNull JavaMethodDescriptor declaration
|
||||||
) {
|
) {
|
||||||
super(containingDeclaration, original, declaration.getAnnotations(),
|
super(containingDeclaration, original, declaration.getAnnotations(), declaration.getName(), kind, declaration.getSource());
|
||||||
declaration.getName(), kind, declaration.getSource());
|
|
||||||
this.declaration = declaration;
|
this.declaration = declaration;
|
||||||
setHasStableParameterNames(declaration.hasStableParameterNames());
|
setParameterNamesStatus(declaration.hasStableParameterNames(), declaration.hasSynthesizedParameterNames());
|
||||||
setHasSynthesizedParameterNames(declaration.hasSynthesizedParameterNames());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+30
-14
@@ -28,8 +28,29 @@ import org.jetbrains.kotlin.types.TypeSubstitutor;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implements JavaCallableMemberDescriptor {
|
public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implements JavaCallableMemberDescriptor {
|
||||||
private Boolean hasStableParameterNames = null;
|
private enum ParameterNamesStatus {
|
||||||
private Boolean hasSynthesizedParameterNames = null;
|
NON_STABLE_DECLARED(false, false),
|
||||||
|
STABLE_DECLARED(true, false),
|
||||||
|
NON_STABLE_SYNTHESIZED(false, true),
|
||||||
|
STABLE_SYNTHESIZED(true, true), // TODO: this makes no sense
|
||||||
|
;
|
||||||
|
|
||||||
|
public final boolean isStable;
|
||||||
|
public final boolean isSynthesized;
|
||||||
|
|
||||||
|
ParameterNamesStatus(boolean isStable, boolean isSynthesized) {
|
||||||
|
this.isStable = isStable;
|
||||||
|
this.isSynthesized = isSynthesized;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static ParameterNamesStatus get(boolean stable, boolean synthesized) {
|
||||||
|
return stable ? (synthesized ? STABLE_SYNTHESIZED : STABLE_DECLARED) :
|
||||||
|
(synthesized ? NON_STABLE_SYNTHESIZED : NON_STABLE_DECLARED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ParameterNamesStatus parameterNamesStatus = null;
|
||||||
|
|
||||||
protected JavaMethodDescriptor(
|
protected JavaMethodDescriptor(
|
||||||
@NotNull DeclarationDescriptor containingDeclaration,
|
@NotNull DeclarationDescriptor containingDeclaration,
|
||||||
@@ -54,22 +75,18 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasStableParameterNames() {
|
public boolean hasStableParameterNames() {
|
||||||
assert hasStableParameterNames != null : "hasStableParameterNames was not set: " + this;
|
assert parameterNamesStatus != null : "Parameter names status was not set: " + this;
|
||||||
return hasStableParameterNames;
|
return parameterNamesStatus.isStable;
|
||||||
}
|
|
||||||
|
|
||||||
public void setHasStableParameterNames(boolean hasStableParameterNames) {
|
|
||||||
this.hasStableParameterNames = hasStableParameterNames;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasSynthesizedParameterNames() {
|
public boolean hasSynthesizedParameterNames() {
|
||||||
assert hasSynthesizedParameterNames != null : "hasSynthesizedParameterNames was not set: " + this;
|
assert parameterNamesStatus != null : "Parameter names status was not set: " + this;
|
||||||
return hasSynthesizedParameterNames;
|
return parameterNamesStatus.isSynthesized;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHasSynthesizedParameterNames(boolean hasSynthesizedParameterNames) {
|
public void setParameterNamesStatus(boolean hasStableParameterNames, boolean hasSynthesizedParameterNames) {
|
||||||
this.hasSynthesizedParameterNames = hasSynthesizedParameterNames;
|
this.parameterNamesStatus = ParameterNamesStatus.get(hasStableParameterNames, hasSynthesizedParameterNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -87,8 +104,7 @@ public class JavaMethodDescriptor extends SimpleFunctionDescriptorImpl implement
|
|||||||
kind,
|
kind,
|
||||||
SourceElement.NO_SOURCE
|
SourceElement.NO_SOURCE
|
||||||
);
|
);
|
||||||
result.setHasStableParameterNames(hasStableParameterNames());
|
result.setParameterNamesStatus(hasStableParameterNames(), hasSynthesizedParameterNames());
|
||||||
result.setHasSynthesizedParameterNames(hasSynthesizedParameterNames());
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -129,8 +129,7 @@ public abstract class LazyJavaScope(
|
|||||||
method.getVisibility()
|
method.getVisibility()
|
||||||
)
|
)
|
||||||
|
|
||||||
functionDescriptorImpl.setHasStableParameterNames(effectiveSignature.hasStableParameterNames())
|
functionDescriptorImpl.setParameterNamesStatus(effectiveSignature.hasStableParameterNames(), valueParameters.hasSynthesizedNames)
|
||||||
functionDescriptorImpl.setHasSynthesizedParameterNames(valueParameters.hasSynthesizedNames)
|
|
||||||
|
|
||||||
if (record) {
|
if (record) {
|
||||||
c.javaResolverCache.recordMethod(method, functionDescriptorImpl)
|
c.javaResolverCache.recordMethod(method, functionDescriptorImpl)
|
||||||
|
|||||||
Reference in New Issue
Block a user