diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index afaa5e5f76e..ef308c3f8d3 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -608,6 +608,7 @@ public class JavaDescriptorResolver { String typeFromAnnotation = null; boolean receiver = false; + boolean hasDefaultValue = false; // TODO: must be very slow, make it lazy? String name = parameter.getName() != null ? parameter.getName() : "p" + i; @@ -638,6 +639,11 @@ public class JavaDescriptorResolver { if (receiverExpression != null) { receiver = (Boolean) receiverExpression.getValue(); } + + PsiLiteralExpression hasDefaultValueExpression = (PsiLiteralExpression) annotation.findAttributeValue(StdlibNames.JET_VALUE_PARAMETER_HAS_DEFAULT_VALUE_FIELD); + if (hasDefaultValueExpression != null) { + hasDefaultValue = (Boolean) hasDefaultValueExpression.getValue(); + } } else if (annotation.getQualifiedName().equals(StdlibNames.JET_TYPE_PARAMETER.getFqName())) { @@ -661,7 +667,7 @@ public class JavaDescriptorResolver { name, null, // TODO : review changeNullable ? TypeUtils.makeNullableAsSpecified(outType, nullable) : outType, - false, + hasDefaultValue, varargElementType )); } diff --git a/compiler/testData/readClass/fun/FunDefaultArg.kt b/compiler/testData/readClass/fun/FunDefaultArg.kt new file mode 100644 index 00000000000..e4cda07d87b --- /dev/null +++ b/compiler/testData/readClass/fun/FunDefaultArg.kt @@ -0,0 +1,3 @@ +namespace test + +fun funDefaultArg(p: Int, q: Int = 17, r: Int = 18) = 19