KT-1860 Resolve annotations of function parameters
#KT-1860 Fixed
This commit is contained in:
@@ -264,7 +264,7 @@ public class DescriptorResolver {
|
|||||||
type = typeResolver.resolveType(parameterScope, typeReference, trace, true);
|
type = typeResolver.resolveType(parameterScope, typeReference, trace, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
ValueParameterDescriptor valueParameterDescriptor = resolveValueParameterDescriptor(functionDescriptor, valueParameter, i, type, trace);
|
ValueParameterDescriptor valueParameterDescriptor = resolveValueParameterDescriptor(parameterScope, functionDescriptor, valueParameter, i, type, trace);
|
||||||
parameterScope.addVariableDescriptor(valueParameterDescriptor);
|
parameterScope.addVariableDescriptor(valueParameterDescriptor);
|
||||||
result.add(valueParameterDescriptor);
|
result.add(valueParameterDescriptor);
|
||||||
}
|
}
|
||||||
@@ -272,7 +272,7 @@ public class DescriptorResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public MutableValueParameterDescriptor resolveValueParameterDescriptor(DeclarationDescriptor declarationDescriptor, JetParameter valueParameter, int index, JetType type, BindingTrace trace) {
|
public MutableValueParameterDescriptor resolveValueParameterDescriptor(JetScope scope, DeclarationDescriptor declarationDescriptor, JetParameter valueParameter, int index, JetType type, BindingTrace trace) {
|
||||||
JetType varargElementType = null;
|
JetType varargElementType = null;
|
||||||
JetType variableType = type;
|
JetType variableType = type;
|
||||||
if (valueParameter.hasModifier(JetTokens.VARARG_KEYWORD)) {
|
if (valueParameter.hasModifier(JetTokens.VARARG_KEYWORD)) {
|
||||||
@@ -282,7 +282,7 @@ public class DescriptorResolver {
|
|||||||
MutableValueParameterDescriptor valueParameterDescriptor = new ValueParameterDescriptorImpl(
|
MutableValueParameterDescriptor valueParameterDescriptor = new ValueParameterDescriptorImpl(
|
||||||
declarationDescriptor,
|
declarationDescriptor,
|
||||||
index,
|
index,
|
||||||
annotationResolver.createAnnotationStubs(valueParameter.getModifierList(), trace),
|
annotationResolver.resolveAnnotations(scope, valueParameter.getModifierList(), trace),
|
||||||
JetPsiUtil.safeName(valueParameter.getName()),
|
JetPsiUtil.safeName(valueParameter.getName()),
|
||||||
valueParameter.isMutable(),
|
valueParameter.isMutable(),
|
||||||
variableType,
|
variableType,
|
||||||
@@ -735,7 +735,7 @@ public class DescriptorResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MutableValueParameterDescriptor valueParameterDescriptor = resolveValueParameterDescriptor(setterDescriptor, parameter, 0, type, trace);
|
MutableValueParameterDescriptor valueParameterDescriptor = resolveValueParameterDescriptor(scope, setterDescriptor, parameter, 0, type, trace);
|
||||||
setterDescriptor.initialize(valueParameterDescriptor);
|
setterDescriptor.initialize(valueParameterDescriptor);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|||||||
+2
-1
@@ -195,7 +195,8 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor {
|
|||||||
type = ErrorUtils.createErrorType("Cannot be inferred");
|
type = ErrorUtils.createErrorType("Cannot be inferred");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ValueParameterDescriptor valueParameterDescriptor = context.expressionTypingServices.getDescriptorResolver().resolveValueParameterDescriptor(functionDescriptor, declaredParameter, i, type, context.trace);
|
ValueParameterDescriptor valueParameterDescriptor = context.expressionTypingServices.getDescriptorResolver().resolveValueParameterDescriptor(
|
||||||
|
context.scope, functionDescriptor, declaredParameter, i, type, context.trace);
|
||||||
valueParameterDescriptors.add(valueParameterDescriptor);
|
valueParameterDescriptors.add(valueParameterDescriptor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
fun foo(<!UNRESOLVED_REFERENCE!>varargs<!> <!UNUSED_PARAMETER!>f<!> : Int) {}
|
||||||
|
|
||||||
|
var bar : Int = 1
|
||||||
|
set(<!UNRESOLVED_REFERENCE!>varargs<!> v) {}
|
||||||
|
|
||||||
|
val x : (Int) -> Int = {([<!UNRESOLVED_REFERENCE!>varargs<!>] x : Int) -> x}
|
||||||
|
|
||||||
|
class Hello(<!UNRESOLVED_REFERENCE!>varargs<!> args: Any) {
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
annotation class test {}
|
||||||
|
|
||||||
|
fun foo(test <!UNUSED_PARAMETER!>f<!> : Int) {}
|
||||||
|
|
||||||
|
var bar : Int = 1
|
||||||
|
set(test v) {}
|
||||||
|
|
||||||
|
val x : (Int) -> Int = {([test] x : Int) -> x}
|
||||||
|
|
||||||
|
class Hello(test args: Any) {
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user