From 6bee77715dbd60dbc336cc9abadad3d884e515c3 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Tue, 20 Dec 2011 23:00:12 +0400 Subject: [PATCH] reading functions with default args --- .../jet/lang/resolve/java/JavaDescriptorResolver.java | 8 +++++++- compiler/testData/readClass/fun/FunDefaultArg.kt | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/readClass/fun/FunDefaultArg.kt 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