EA-36814. Do not repeat annotations resolve
for primary constructor parameters as properties (annotations are already resolved for parameters themselves)
This commit is contained in:
@@ -229,18 +229,23 @@ public class DeclarationResolver {
|
||||
// TODO : not all the parameters are real properties
|
||||
JetScope memberScope = classDescriptor.getScopeForSupertypeResolution();
|
||||
ConstructorDescriptor constructorDescriptor = descriptorResolver.resolvePrimaryConstructorDescriptor(memberScope, classDescriptor, klass, trace);
|
||||
for (JetParameter parameter : klass.getPrimaryConstructorParameters()) {
|
||||
if (parameter.getValOrVarNode() != null) {
|
||||
PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePrimaryConstructorParameterToAProperty(
|
||||
classDescriptor,
|
||||
memberScope,
|
||||
parameter, trace
|
||||
);
|
||||
classDescriptor.getBuilder().addPropertyDescriptor(propertyDescriptor);
|
||||
context.getPrimaryConstructorParameterProperties().put(parameter, propertyDescriptor);
|
||||
}
|
||||
}
|
||||
if (constructorDescriptor != null) {
|
||||
List<ValueParameterDescriptor> valueParameters = constructorDescriptor.getValueParameters();
|
||||
assert valueParameters.size() == klass.getPrimaryConstructorParameters().size();
|
||||
int i = 0;
|
||||
for (JetParameter parameter : klass.getPrimaryConstructorParameters()) {
|
||||
if (parameter.getValOrVarNode() != null) {
|
||||
PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePrimaryConstructorParameterToAProperty(
|
||||
classDescriptor,
|
||||
valueParameters.get(i),
|
||||
memberScope,
|
||||
parameter, trace
|
||||
);
|
||||
classDescriptor.getBuilder().addPropertyDescriptor(propertyDescriptor);
|
||||
context.getPrimaryConstructorParameterProperties().put(parameter, propertyDescriptor);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
classDescriptor.setPrimaryConstructor(constructorDescriptor, trace);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -924,6 +924,7 @@ public class DescriptorResolver {
|
||||
@NotNull
|
||||
public PropertyDescriptor resolvePrimaryConstructorParameterToAProperty(
|
||||
@NotNull ClassDescriptor classDescriptor,
|
||||
@NotNull ValueParameterDescriptor valueParameter,
|
||||
@NotNull JetScope scope,
|
||||
@NotNull JetParameter parameter, BindingTrace trace) {
|
||||
JetType type = resolveParameterType(scope, parameter, trace);
|
||||
@@ -940,7 +941,7 @@ public class DescriptorResolver {
|
||||
|
||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
||||
classDescriptor,
|
||||
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
||||
valueParameter.getAnnotations(),
|
||||
resolveModalityFromModifiers(parameter.getModifierList(), Modality.FINAL),
|
||||
resolveVisibilityFromModifiers(parameter.getModifierList()),
|
||||
isMutable,
|
||||
|
||||
+18
-13
@@ -36,10 +36,7 @@ import org.jetbrains.jet.lang.types.DeferredType;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.util.lazy.LazyValue;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author abreslav
|
||||
@@ -111,15 +108,23 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
||||
if (classOrObject instanceof JetClass) {
|
||||
JetClass jetClass = (JetClass) classOrObject;
|
||||
|
||||
for (JetParameter parameter : jetClass.getPrimaryConstructorParameters()) {
|
||||
if (parameter.getValOrVarNode() != null && name.equals(parameter.getNameAsName())) {
|
||||
PropertyDescriptor propertyDescriptor =
|
||||
resolveSession.getInjector().getDescriptorResolver().resolvePrimaryConstructorParameterToAProperty(
|
||||
thisDescriptor,
|
||||
thisDescriptor.getScopeForClassHeaderResolution(),
|
||||
parameter, resolveSession.getTrace()
|
||||
);
|
||||
result.add(propertyDescriptor);
|
||||
ConstructorDescriptor primaryConstructor = getPrimaryConstructor();
|
||||
if (primaryConstructor != null) {
|
||||
List<ValueParameterDescriptor> valueParameters = primaryConstructor.getValueParameters();
|
||||
assert valueParameters.size() == jetClass.getPrimaryConstructorParameters().size();
|
||||
int i = 0;
|
||||
for (JetParameter parameter : jetClass.getPrimaryConstructorParameters()) {
|
||||
if (parameter.getValOrVarNode() != null && name.equals(parameter.getNameAsName())) {
|
||||
PropertyDescriptor propertyDescriptor =
|
||||
resolveSession.getInjector().getDescriptorResolver().resolvePrimaryConstructorParameterToAProperty(
|
||||
thisDescriptor,
|
||||
valueParameters.get(i),
|
||||
thisDescriptor.getScopeForClassHeaderResolution(),
|
||||
parameter, resolveSession.getTrace()
|
||||
);
|
||||
result.add(propertyDescriptor);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package a
|
||||
|
||||
import java.lang.Deprecated as deprecated
|
||||
import java.lang.SuppressWarnings as suppresswarnings
|
||||
|
||||
|
||||
deprecated suppresswarnings val s: String = "";
|
||||
|
||||
deprecated suppresswarnings fun main(args : Array<String>) {
|
||||
System.out.println("Hello, world!")
|
||||
}
|
||||
|
||||
class Test(deprecated val s: String,
|
||||
suppresswarnings val x : Int) {}
|
||||
|
||||
Reference in New Issue
Block a user