From c18a5009a4a63f51e5f19e42c5498493efa6f1e4 Mon Sep 17 00:00:00 2001 From: Stepan Koltsov Date: Wed, 18 Jan 2012 11:56:27 +0400 Subject: [PATCH] test for function type --- .../type/Function1IntString.kt | 3 +++ .../jetbrains/jet/NamespaceComparator.java | 23 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 compiler/testData/readKotlinBinaryClass/type/Function1IntString.kt diff --git a/compiler/testData/readKotlinBinaryClass/type/Function1IntString.kt b/compiler/testData/readKotlinBinaryClass/type/Function1IntString.kt new file mode 100644 index 00000000000..ce8b87d4a66 --- /dev/null +++ b/compiler/testData/readKotlinBinaryClass/type/Function1IntString.kt @@ -0,0 +1,3 @@ +package test + +fun fun1(): (String) -> Int = throw Exception() diff --git a/compiler/tests/org/jetbrains/jet/NamespaceComparator.java b/compiler/tests/org/jetbrains/jet/NamespaceComparator.java index 196f8a587e0..7a7dfb7daf5 100644 --- a/compiler/tests/org/jetbrains/jet/NamespaceComparator.java +++ b/compiler/tests/org/jetbrains/jet/NamespaceComparator.java @@ -15,6 +15,8 @@ import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; +import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; +import org.jetbrains.jet.lang.resolve.java.JavaNamespaceDescriptor; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.receivers.ExtensionReceiver; import org.jetbrains.jet.lang.types.JetType; @@ -290,6 +292,10 @@ class NamespaceComparator { } private Method getMethodToSerialize(Object o) { + if (o == null) { + throw new IllegalStateException("won't serialize null"); + } + // TODO: cache for (Method method : this.getClass().getMethods()) { if (!method.getName().equals("serialize")) { @@ -328,11 +334,12 @@ class NamespaceComparator { } public void serialize(NamespaceDescriptor ns) { - if (ns.getContainingDeclaration() == null) { - // root ns + if (isRootNs(ns)) { return; } - new NamespacePrefixSerializer(sb).serialize(ns.getContainingDeclaration()); + if (ns.getContainingDeclaration() != null) { + new NamespacePrefixSerializer(sb).serialize(ns.getContainingDeclaration()); + } sb.append(ns.getName()); } @@ -356,6 +363,11 @@ class NamespaceComparator { } + private static boolean isRootNs(DeclarationDescriptor ns) { + // upyachka + return ns instanceof JavaNamespaceDescriptor && JavaDescriptorResolver.JAVA_ROOT.equals(ns.getName()); + } + private static class NamespacePrefixSerializer extends Serializer { public NamespacePrefixSerializer(StringBuilder sb) { @@ -364,11 +376,10 @@ class NamespaceComparator { @Override public void serialize(NamespaceDescriptor ns) { - if (ns.getContainingDeclaration() == null) { - // root ns + super.serialize(ns); + if (isRootNs(ns)) { return; } - super.serialize(ns); sb.append("."); }