From 8e6e8e938c763d6e1eb0861ee9cca3605b2b6c97 Mon Sep 17 00:00:00 2001 From: Alex Tkachman Date: Thu, 9 Feb 2012 20:36:09 +0200 Subject: [PATCH] def args in constructors --- .../jet/codegen/ImplementationBodyCodegen.java | 4 +++- stdlib/ktSrc/concurrent/FunctionalQueue.kt | 2 +- testlib/test/concurrent/FListTest.kt | 16 ++++++++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 testlib/test/concurrent/FListTest.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index d1e3d16270b..88c3f6b658b 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -486,6 +486,8 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { AnnotationVisitor jetValueParameterAnnotation = mv.visitParameterAnnotation(i++, JvmStdlibNames.JET_VALUE_PARAMETER.getDescriptor(), true); jetValueParameterAnnotation.visit(JvmStdlibNames.JET_VALUE_PARAMETER_NAME_FIELD, valueParameter.getName()); + if(valueParameter.hasDefaultValue()) + jetValueParameterAnnotation.visit(JvmStdlibNames.JET_VALUE_PARAMETER_HAS_DEFAULT_VALUE_FIELD, Boolean.TRUE); jetValueParameterAnnotation.visitEnd(); } } @@ -574,7 +576,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { } final ClassDescriptor outerDescriptor = getOuterClassDescriptor(); - if (outerDescriptor != null && outerDescriptor.getKind() != ClassKind.OBJECT) { + if (outerDescriptor != null && !CodegenUtil.isClassObject(outerDescriptor)) { final Type type = typeMapper.mapType(outerDescriptor.getDefaultType(), OwnerKind.IMPLEMENTATION); String interfaceDesc = type.getDescriptor(); final String fieldName = "this$0"; diff --git a/stdlib/ktSrc/concurrent/FunctionalQueue.kt b/stdlib/ktSrc/concurrent/FunctionalQueue.kt index 36b5da65db0..3dc6ee83303 100644 --- a/stdlib/ktSrc/concurrent/FunctionalQueue.kt +++ b/stdlib/ktSrc/concurrent/FunctionalQueue.kt @@ -3,7 +3,7 @@ package std.concurrent import java.util.concurrent.Executor import jet.Iterator -class FunctionalQueue( +class FunctionalQueue ( val input: FunctionalList = FunctionalList.emptyList(), val output: FunctionalList = FunctionalList.emptyList()) { diff --git a/testlib/test/concurrent/FListTest.kt b/testlib/test/concurrent/FListTest.kt new file mode 100644 index 00000000000..8ad4c5c5bfb --- /dev/null +++ b/testlib/test/concurrent/FListTest.kt @@ -0,0 +1,16 @@ +package test.concurrent + +import std.concurrent.* +import junit.framework.* + +class FListTest() : TestCase() { + fun testEmpty() { + val empty = FunctionalQueue () + Assert.assertTrue(empty.empty) + } + + fun testNonEmpty() { +// val empty = FunctionalList.emptyList () +// assertTrue(!(empty + 10).empty) + } +}