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:
Svetlana Isakova
2012-06-22 17:23:55 +04:00
parent 32e0b06de1
commit 53b59ce152
4 changed files with 51 additions and 25 deletions
@@ -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,
@@ -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) {}