Store ABI version along with serialized descriptors

KotlinInfo annotation now has a version() field, which should be equal to the
compiler's JvmAbi.VERSION in order for this class to properly load and be used.

Create ErrorReporter class, which has a trace to which it can report errors
(now only related to ABI version). This is done because a dependency of
DeserializedDescriptorResolver from BindingTrace would be confusing.
Implementation of ErrorReporter will probably need to change when we untie
deserialization from java-resolve.

Check if PsiClass is actually a compiled class before trying to load serialized
data from it: otherwise it can be a Java source, as was in wrongAbiVersion()
test, and ASM will fail when trying to read that file. Rewrite the test so that
it now has a compiled Kotlin classes to check against (also include sources to
recompile this binary data later, although it won't probably be needed)
This commit is contained in:
Alexander Udalov
2013-07-09 21:04:39 +04:00
parent cc4fd008ad
commit 6ae81c3ade
20 changed files with 170 additions and 68 deletions
@@ -1,4 +0,0 @@
import jet.runtime.typeinfo.JetClass;
@JetClass("Ljava/lang/Object;", 16, -1)
class ClassWithWrongAbiVersion {}
@@ -0,0 +1 @@
class ClassWithWrongAbiVersion
@@ -0,0 +1,3 @@
package wrong
fun bar() {}
@@ -1,6 +0,0 @@
package wrong;
@jet.runtime.typeinfo.JetPackageClass(abiVersion = -1)
public class WrongPackage {
public static void bar() {}
}