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
|
// TODO : not all the parameters are real properties
|
||||||
JetScope memberScope = classDescriptor.getScopeForSupertypeResolution();
|
JetScope memberScope = classDescriptor.getScopeForSupertypeResolution();
|
||||||
ConstructorDescriptor constructorDescriptor = descriptorResolver.resolvePrimaryConstructorDescriptor(memberScope, classDescriptor, klass, trace);
|
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) {
|
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);
|
classDescriptor.setPrimaryConstructor(constructorDescriptor, trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -924,6 +924,7 @@ public class DescriptorResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public PropertyDescriptor resolvePrimaryConstructorParameterToAProperty(
|
public PropertyDescriptor resolvePrimaryConstructorParameterToAProperty(
|
||||||
@NotNull ClassDescriptor classDescriptor,
|
@NotNull ClassDescriptor classDescriptor,
|
||||||
|
@NotNull ValueParameterDescriptor valueParameter,
|
||||||
@NotNull JetScope scope,
|
@NotNull JetScope scope,
|
||||||
@NotNull JetParameter parameter, BindingTrace trace) {
|
@NotNull JetParameter parameter, BindingTrace trace) {
|
||||||
JetType type = resolveParameterType(scope, parameter, trace);
|
JetType type = resolveParameterType(scope, parameter, trace);
|
||||||
@@ -940,7 +941,7 @@ public class DescriptorResolver {
|
|||||||
|
|
||||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
||||||
classDescriptor,
|
classDescriptor,
|
||||||
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
valueParameter.getAnnotations(),
|
||||||
resolveModalityFromModifiers(parameter.getModifierList(), Modality.FINAL),
|
resolveModalityFromModifiers(parameter.getModifierList(), Modality.FINAL),
|
||||||
resolveVisibilityFromModifiers(parameter.getModifierList()),
|
resolveVisibilityFromModifiers(parameter.getModifierList()),
|
||||||
isMutable,
|
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.lang.types.JetType;
|
||||||
import org.jetbrains.jet.util.lazy.LazyValue;
|
import org.jetbrains.jet.util.lazy.LazyValue;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author abreslav
|
* @author abreslav
|
||||||
@@ -111,15 +108,23 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
if (classOrObject instanceof JetClass) {
|
if (classOrObject instanceof JetClass) {
|
||||||
JetClass jetClass = (JetClass) classOrObject;
|
JetClass jetClass = (JetClass) classOrObject;
|
||||||
|
|
||||||
for (JetParameter parameter : jetClass.getPrimaryConstructorParameters()) {
|
ConstructorDescriptor primaryConstructor = getPrimaryConstructor();
|
||||||
if (parameter.getValOrVarNode() != null && name.equals(parameter.getNameAsName())) {
|
if (primaryConstructor != null) {
|
||||||
PropertyDescriptor propertyDescriptor =
|
List<ValueParameterDescriptor> valueParameters = primaryConstructor.getValueParameters();
|
||||||
resolveSession.getInjector().getDescriptorResolver().resolvePrimaryConstructorParameterToAProperty(
|
assert valueParameters.size() == jetClass.getPrimaryConstructorParameters().size();
|
||||||
thisDescriptor,
|
int i = 0;
|
||||||
thisDescriptor.getScopeForClassHeaderResolution(),
|
for (JetParameter parameter : jetClass.getPrimaryConstructorParameters()) {
|
||||||
parameter, resolveSession.getTrace()
|
if (parameter.getValOrVarNode() != null && name.equals(parameter.getNameAsName())) {
|
||||||
);
|
PropertyDescriptor propertyDescriptor =
|
||||||
result.add(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