Alexander Udalov
6eeee31381
Remove unused dependency of 'serialization' module on 'junit' library
2013-09-18 16:40:34 +04:00
Alexander Udalov
effbdcaa4c
Move utilities out of OverrideResolver
2013-09-18 16:40:34 +04:00
Alexander Udalov
f5faf8acb2
Get rid of dependency of class descriptors on BindingTrace
2013-09-18 16:40:34 +04:00
Pavel V. Talanov
255f08c8d7
Do not include DescriptorDeclaration#toString() in debug message
...
DescriptorDeclaration#toString() can be a costly operation (default implementation completely renders descriptor)
2013-09-10 17:42:54 +04:00
Pavel V. Talanov
e4b2e32827
Return error class in case we are not able to find class for object property
2013-09-10 13:15:30 +04:00
Alexander Udalov
77e0d275db
Remove unreachable code in AnnotationDescriptorDeserializer
...
Kotlin classes should only be discoverable by VirtualFileFinder
2013-09-06 21:28:49 +04:00
Svetlana Isakova
8d0573f448
added 'isDenotable' flag to TypeConstructor
2013-09-02 23:18:43 +04:00
Alexander Udalov
de062274e9
Extract getEnumEntriesScope utility method
2013-08-29 16:48:09 +04:00
Alexander Udalov
eff99e563b
Write ProtoBuf.Package to .kotlin_package
...
Instead of a delimited list of callables. Also some minor refactorings
2013-08-23 17:39:26 +04:00
Alexander Udalov
196b829002
Serialize packages via descriptors in codegen
...
Disable KotlinPackage annotation for scripts, otherwise script analyzer tries
to add descriptors to a locked scope
2013-08-23 17:39:25 +04:00
Alexander Udalov
8cbdb2924a
Minor, make callback method empty, not abstract
2013-08-23 17:39:24 +04:00
Alexander Udalov
132f77d3c4
Minor, delete SerializerProvider
2013-08-23 17:39:24 +04:00
Alexander Udalov
2e3005e431
Minor, deserialized package scope is now not abstract
2013-08-23 17:39:24 +04:00
Alexander Udalov
b602db03f2
DescriptorFinder now can find class names in a package
...
This helps to get rid of "repeated class_name" field in Package protobuf
message. DescriptorFinder in resolve.java uses PSI to find all classes in a
package, and the finder for built-ins just reads .kotlin_class_names file
2013-08-23 17:39:24 +04:00
Alexander Udalov
87d4e35388
Deserialize annotations on class properties w/o fields
...
Annotations on properties without backing fields are stored on a special
synthesized method inside the class
2013-08-23 17:39:21 +04:00
Alexander Udalov
453b0e8f10
Write java signature of serialized descriptors efficiently
...
Instead of storing a string with the signature, write the name, return type and
parameter types separately, reusing the name table. Refactor the name table to
allow it to store not only names of Kotlin entities, but also arbitrary names
and fq-names
2013-08-23 17:39:21 +04:00
Alexander Udalov
b44bc620e0
Implement getNamespace() for deserialized scope
...
DescriptorFinder now can find packages, pull the method up from
AbstractDescriptorFinder class
2013-08-23 17:39:19 +04:00
Alexander Udalov
93d200be82
Minor, move byte arrays logic to ClassData/PackageData
2013-08-23 17:39:19 +04:00
Alexander Udalov
e63cef0848
Deserialize annotations on package members
2013-08-23 17:39:19 +04:00
Alexander Udalov
67ca7b78c4
Deserialize annotations on class members
...
Make 'Callable' message of descriptors.proto extensible, extend it in
java_descriptors.proto with a JVM signature of the member. This is needed in
order for annotation deserializer to find out which member in the compiled
bytecode corresponds to which descriptor in the hierarchy.
Create a new module 'serialization.java' containing everything related to
Java-specific serialization of descriptors.
Add an extension point to DescriptorSerializer, allowing to perform
platform-specific serialization on a callable
2013-08-23 17:39:18 +04:00
Alexander Udalov
548a2853aa
Create an extension point to DescriptorSerializer
...
Extract the existing predicate logic into it
2013-08-23 17:39:18 +04:00
Alexander Udalov
4aeeafdff0
Deserialize annotations on classes
...
First version, not all kinds of value arguments of annotations are supported
2013-08-23 17:39:18 +04:00
Pavel V. Talanov
9a33567287
Read KotlinInfo annotations for packages
...
JavaNamespaceDescriptor creates DeserializedPackageMemberScope in case there is *Package class present for a particular package (other cases work as before)
2013-08-23 17:39:17 +04:00
Alexander Udalov
011f733aad
Serialize properties for objects
...
A new special CallableKind for properties created for objects --
OBJECT_PROPERTY.
Also fix PropertyPsiData.isFinal() in case of properties backed by fields
2013-08-23 17:39:17 +04:00
Pavel V. Talanov
a57f74c278
Introduce VariableDescriptorForObject interface
...
Add implementations
Use this interface instead of CLASS_OBJECT_DECLARATION key in BindingContext
2013-08-23 17:39:16 +04:00
Alexander Udalov
dc5bc1488c
Serialize package members and class names
...
Write KotlinInfo annotation to the facade package class
2013-08-23 17:39:16 +04:00
Pavel V. Talanov
d6d83e9bc2
Change signature of AbstractDescriptorFinder#getPackage method
2013-08-23 17:39:15 +04:00
Pavel V. Talanov
c08f067df2
Straightforward logic for deserialization descriptors in DeserializedDescriptorResolver
2013-08-23 17:39:15 +04:00
Pavel V. Talanov
0aa4ba3fe6
Minor
...
Remove unused method
2013-08-23 17:39:15 +04:00
Pavel V. Talanov
c3b1716e29
Rename ClassResolver -> DescriptorFinder
...
Avoid clash with JavaDescriptorResolver naming conventions
2013-08-23 17:39:15 +04:00
Pavel V. Talanov
c3a44e37ba
Remove various getClassId methods
2013-08-23 17:39:14 +04:00
Pavel V. Talanov
fa93ee7ff2
Remove NestedClassResolver class
2013-08-23 17:39:14 +04:00
Alexander Udalov
f9ad6827d4
Simplify class object naming madness
...
- get rid of DescriptorNamer, always use descriptor.getName() instead
- delete AbstractClassResolver.getClassObjectName(), always use
"<class-object-for-...>", except for the case of built-ins serialization
(class object names should be replaced by "object" when writing files with
serialized data for built-ins)
- delete NestedClassResolver.resolveClassObject(), always use the other method
of this class instead
2013-08-23 17:39:14 +04:00
Alexander Udalov
034a13350d
Create enum entries for deserialized enum classes
2013-08-23 17:39:13 +04:00
Pavel V. Talanov
934be3bef5
Fix serialization of root namespace
2013-08-23 17:39:13 +04:00
Alexander Udalov
c69a5aba25
Serialize/deserialize enum entries in enum classes
2013-08-23 17:39:13 +04:00
Pavel V. Talanov
04e9e953c3
Initial version of deserialization of compiled kotlin classes
...
Annotations are not supported
2013-08-23 17:39:12 +04:00
Alexander Udalov
83501c3722
KotlinInfo now has only one parameter data
...
Name table is now also stored in data, before the serialized class.
ClassData is now public, since it's used in plenty of places as a holder of
deserialized protobuf classes.
2013-08-23 17:39:12 +04:00
Alexander Udalov
007f3325fb
Serialize property setter parameter names
2013-08-23 17:39:12 +04:00
Alexander Udalov
b4ac02b175
Adapt to protobuf style guide
...
Identifiers consisting of multiple words should be separated by an underscore,
repeated field names should be singular
2013-08-23 17:39:11 +04:00
Alexander Udalov
bdb7c1eb45
Fix property setters serialization, hasGetter->hasSetter
2013-08-23 17:39:11 +04:00
Alexander Udalov
2841238567
Don't serialize non-serializable types
...
If there's a private property in a class which has a type of some local
class/object, write its type as jet.Any (otherwise there's no obvious way to
construct a FQ name of such type)
2013-08-23 17:39:11 +04:00
Alexander Udalov
1acc1564d9
Add KotlinInfo annotation, serialize classes to bytecode
2013-08-23 17:39:11 +04:00
Alexander Udalov
06496ea3ed
Deserialized type's hashCode() should compute everything
2013-08-23 17:39:10 +04:00
Andrey Breslav
113c5994e8
Deserialized types rely on storage manager
2013-08-23 17:39:09 +04:00
Andrey Breslav
d8e2034c71
Deserializers use storage manager
2013-08-23 17:39:09 +04:00
Andrey Breslav
48435531ea
Deserialized scopes rely on storage manager
2013-08-23 17:39:09 +04:00
Andrey Breslav
8ff99b9fe7
Class descriptors rely on StorageManager
2013-08-23 17:39:09 +04:00
Andrey Breslav
f527fe251c
Replace a mutable map with a memoized function
...
(Premature optimization removed: trove's map replaced by something that will be boxing primitives)
2013-08-23 17:39:08 +04:00
Andrey Breslav
867adcc167
Getting rid of mutable state in TypeDeserializer
2013-08-23 17:39:08 +04:00