From c1bc5ceb990d6635e2a7b103ca61c457f72c3ed9 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Tue, 20 Dec 2011 00:28:27 +0400 Subject: [PATCH] enable class content serialization in ReadClassDataTest; add test for function params with upper bounds --- .../readClass/fun/FunParamUpperClassBound.kt | 3 +++ .../fun/FunParamUpperClassInterfaceBound.kt | 3 +++ .../fun/FunParamUpperInterfaceBound.kt | 3 +++ .../fun/FunParamUpperInterfaceClassBound.kt | 3 +++ .../org/jetbrains/jet/ReadClassDataTest.java | 27 +++++++++++++++---- 5 files changed, 34 insertions(+), 5 deletions(-) create mode 100644 compiler/testData/readClass/fun/FunParamUpperClassBound.kt create mode 100644 compiler/testData/readClass/fun/FunParamUpperClassInterfaceBound.kt create mode 100644 compiler/testData/readClass/fun/FunParamUpperInterfaceBound.kt create mode 100644 compiler/testData/readClass/fun/FunParamUpperInterfaceClassBound.kt diff --git a/compiler/testData/readClass/fun/FunParamUpperClassBound.kt b/compiler/testData/readClass/fun/FunParamUpperClassBound.kt new file mode 100644 index 00000000000..3a4c68fed8f --- /dev/null +++ b/compiler/testData/readClass/fun/FunParamUpperClassBound.kt @@ -0,0 +1,3 @@ +namespace test + +fun uno() = 1 diff --git a/compiler/testData/readClass/fun/FunParamUpperClassInterfaceBound.kt b/compiler/testData/readClass/fun/FunParamUpperClassInterfaceBound.kt new file mode 100644 index 00000000000..678d5a2967a --- /dev/null +++ b/compiler/testData/readClass/fun/FunParamUpperClassInterfaceBound.kt @@ -0,0 +1,3 @@ +namespace test + +fun tres() where A : java.lang.Number, A : java.lang.CharSequence = 1 diff --git a/compiler/testData/readClass/fun/FunParamUpperInterfaceBound.kt b/compiler/testData/readClass/fun/FunParamUpperInterfaceBound.kt new file mode 100644 index 00000000000..00a6e0432cb --- /dev/null +++ b/compiler/testData/readClass/fun/FunParamUpperInterfaceBound.kt @@ -0,0 +1,3 @@ +namespace test + +fun dos() = 1 diff --git a/compiler/testData/readClass/fun/FunParamUpperInterfaceClassBound.kt b/compiler/testData/readClass/fun/FunParamUpperInterfaceClassBound.kt new file mode 100644 index 00000000000..6effa87aba9 --- /dev/null +++ b/compiler/testData/readClass/fun/FunParamUpperInterfaceClassBound.kt @@ -0,0 +1,3 @@ +namespace test + +fun cuatro() where A : java.lang.CharSequence, A : java.lang.Number = 1 diff --git a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java index 2627cd5c94d..b8a9351f937 100644 --- a/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java +++ b/compiler/tests/org/jetbrains/jet/ReadClassDataTest.java @@ -160,9 +160,6 @@ public class ReadClassDataTest extends UsefulTestCase { sb.append(" {\n"); - if (false) { - // TODO: for some reason I don't understand scope of ClassDescriptor came from source is empty - List typeArguments = new ArrayList(); for (TypeParameterDescriptor param : klass.getTypeConstructor().getParameters()) { typeArguments.add(new TypeProjection(Variance.INVARIANT, param.getDefaultType())); @@ -170,12 +167,21 @@ public class ReadClassDataTest extends UsefulTestCase { JetScope memberScope = klass.getMemberScope(typeArguments); for (DeclarationDescriptor member : memberScope.getAllDescriptors()) { + // TODO + if (member.getName().equals("equals") || member.getName().equals("hashCode") + || member.getName().equals("wait") || member.getName().equals("notify") || member.getName().equals("notifyAll") + || member.getName().equals("toString") || member.getName().equals("getClass") + || member.getName().equals("clone") || member.getName().equals("finalize") + || member.getName().equals("getTypeInfo") || member.getName().equals("$setTypeInfo") || member.getName().equals("$typeInfo") + ) + { + continue; + } + sb.append(" "); serialize(member, sb); sb.append("\n"); } - } - sb.append("}\n"); return sb.toString(); } @@ -213,6 +219,17 @@ public class ReadClassDataTest extends UsefulTestCase { serialize(fun.getReturnType(), sb); } + private void serialize(PropertyDescriptor prop, StringBuilder sb) { + if (prop.isVar()) { + sb.append("var "); + } else { + sb.append("val "); + } + sb.append(prop.getName()); + sb.append(": "); + serialize(prop.getOutType(), sb); + } + private void serialize(ValueParameterDescriptor valueParameter, StringBuilder sb) { sb.append(valueParameter.getName()); sb.append(": ");