enable class content serialization in ReadClassDataTest; add test for function params with upper bounds

This commit is contained in:
Stepan Koltsov
2011-12-20 00:28:27 +04:00
parent c68f1e2409
commit c1bc5ceb99
5 changed files with 34 additions and 5 deletions
@@ -0,0 +1,3 @@
namespace test
fun <A : java.lang.Number> uno() = 1
@@ -0,0 +1,3 @@
namespace test
fun <A> tres() where A : java.lang.Number, A : java.lang.CharSequence = 1
@@ -0,0 +1,3 @@
namespace test
fun <A : java.lang.CharSequence> dos() = 1
@@ -0,0 +1,3 @@
namespace test
fun <A> cuatro() where A : java.lang.CharSequence, A : java.lang.Number = 1
@@ -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<TypeProjection> typeArguments = new ArrayList<TypeProjection>();
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(": ");