Michael Bogdanov
fd6d4c352c
Special enum function support; Fix for KT-10569: Cannot iterate over values of an enum class when it is used as a generic parameter
...
#KT-10569 Fixed
2016-11-03 14:27:13 +03:00
Yan Zhulanow
c2ddd943f9
Lint: Update diagnostics because of the new Uast. Also, these diagnostics are from AS 2.2.
2016-11-01 19:36:31 +03:00
Michael Bogdanov
fd2655fd4a
Bridge support
2016-10-27 16:43:02 +03:00
Michael Bogdanov
0910f166a5
Make default methods for inlineOnly and reified functions package private
2016-10-27 11:03:35 +03:00
Alexander Udalov
484b0e36fb
Add KotlinBuiltIns#isBuiltIn, use it instead of other utilities
2016-10-26 16:31:05 +03:00
Michael Bogdanov
eaf9c2e8b0
Fix for KT-13890: IllegalAccessError when invoking protected method with default arguments
...
#KT-13890 Fixed
2016-10-26 12:13:20 +03:00
Michael Bogdanov
1e59161e8f
Fix for KT-14201: UnsupportedOperationException: Don't know how to generate outer expression for anonymous object with invoke and non-trivial closure
...
#KT-14201 Fixed
2016-10-26 12:13:19 +03:00
Alexander Udalov
4e7542b07d
Filter out non-builtin package fragments from module when needed
...
In subsequent commits, a JVM module will be able to have up to two package
fragments for a given package FQ name. For example, for package "kotlin" in
kotlin-runtime.jar there will be a LazyJavaPackageFragment with binary
(Kotlin+Java) dependencies, and a BuiltInsPackageFragment for built-ins
metadata (which is loaded from kotlin/kotlin.kotlin_builtins)
2016-10-25 15:42:33 +03:00
Alexander Udalov
9ce211fe87
Use FQ names instead of descriptor equality in RangeCodegenUtil
...
This is safer in cases when descriptors for the same declaration can come from
different package fragment providers
2016-10-25 15:42:33 +03:00
Alexander Udalov
0e9f29fdba
Make ClassDescriptor#classId nullable
...
Local classes or anonymous objects do not have a class id. Use "!!" almost
everywhere to make assertion explicit
2016-10-25 15:42:32 +03:00
Denis Zharkov
b7e8071a7d
Do not use BasicInterpreter for bytecode analysis
...
The problem with BasicInterpreter is the following:
it creates BasicValue objects that should be replaced in favor of StrictBasicicValue
See commit message in 25c6ac1 for clarification
#KT-14447 Fixed
2016-10-25 10:14:52 +03:00
Denis Zharkov
e9efc9e892
Replace usages of BasicValue constants in master with StrictBasicValue
2016-10-25 10:14:52 +03:00
Denis Zharkov
d279ded714
Add license and links to rewritten ASM classes
2016-10-25 10:14:52 +03:00
Denis Zharkov
3a197e8d7e
Fix NPE caused by nullability checks optimizations
...
Mostly this commit replaces instances of original BasicValue from ASM
with ones of StrictBasicValue having strict equals implementation
Optimization issue was related to non-symmetric 'equals':
- NotNullBasicValue("java/lang/Object").equals(BasicValue("java/lang/Object")) == false
- BasicValue("java/lang/Object").equals(NotNullBasicValue("java/lang/Object")) == true
#KT-14242 Fixed
2016-10-25 10:14:52 +03:00
Alexander Udalov
a5a422fc4d
Use TypeConstructor equality instead of ClassDescriptor in CollectionStubMethodGenerator
...
Equals/hashCode are meaningful for TypeConstructor instances (see
AbstractClassTypeConstructor.java) in contrast to ClassDescriptor where
equality is referential
2016-10-24 15:30:39 +03:00
Alexander Udalov
08398178e0
Make class descriptors in JvmRuntimeTypes lazy
...
The main reason currently is to avoid eager construction of
defaultContinuationSupertype long before it's needed, which could fail without
built-ins in the classpath
2016-10-24 15:30:39 +03:00
Alexander Udalov
e1aaccaec1
J2K JvmRuntimeTypes: prettify
2016-10-24 15:30:39 +03:00
Alexander Udalov
32b672490f
J2K JvmRuntimeTypes: convert
2016-10-24 15:30:39 +03:00
Alexander Udalov
9e4ffd9225
J2K JvmRuntimeTypes: rename .java -> .kt
2016-10-24 15:30:38 +03:00
Alexander Udalov
cdf6567375
Drop TypeConstructor.getAnnotations(), uninherit TypeConstructor from Annotated
...
The method was unused on TypeConstructor instances, and almost all
implementations returned EMPTY anyway
2016-10-24 15:30:38 +03:00
Denis Zharkov
a9fcee098d
Support single-underscore named variables in JVM backend
...
There are mainly two kind of changes:
- skipping 'componentX' calls for destructuring entries named _
- fixing local variable table for them
- skip entries for destructuring entries named _
- use $noName_<i> format for lambda parameters named _
#KT-3824 Fixed
#KT-2783 Fixed
2016-10-24 10:19:25 +03:00
Denis Zharkov
544d8f5b66
Minor. Extract method for retreiving variable descriptor in codegen
2016-10-24 10:19:25 +03:00
Denis Zharkov
4041c702b3
Minor. Get rid of code duplication
...
For initialization of destructuring entries in loops use the same logic
as for common local destructuring
The behavior may change a little: variable start label in a table
becomes less precise (now it starts a little bit earlier than it become initialized),
but it can't be very important as the same logic works for common
destructuring
2016-10-24 10:19:25 +03:00
Dmitry Petrov
c41ec1ddfb
KT-14400: Properly handle TypeAliasConstructorDescriptor in KotlinTypeMapper.mapToCallableMethod(...)
...
Implement getDefaultType() in TypeAliasDescriptor subclasses.
2016-10-20 09:56:03 +03:00
Dmitry Petrov
7dce1f438f
Inner classes lowering.
2016-10-19 19:13:40 +03:00
Denis Zharkov
4793f71da2
Properly generate indices for destructured parameters in inline case
...
#KT-14399 Fixed
2016-10-19 16:05:50 +03:00
Alexander Udalov
7b2a80ffa4
Fix incremental recompilation of JvmMultifileClass with top level function
...
See 53b584f and previous changes where this behavior was broken (this was
untested, however). Fixes EA-90065
2016-10-19 12:50:10 +03:00
Michael Bogdanov
d48ef2efc7
Fix for KT-14012: Back-end (JVM) Internal error every first compilation after the source code change
...
#KT-14012 Fixed
2016-10-18 10:46:51 +03:00
Dmitry Petrov
703110c0e2
Update after rebase on master.
2016-10-18 09:10:18 +03:00
Michael Bogdanov
4b6ddc4a9d
Initial annotation support
2016-10-18 09:10:15 +03:00
Michael Bogdanov
e40c434c57
Write inner class attributes
2016-10-18 09:10:03 +03:00
Michael Bogdanov
0b45655b7b
Support exhaustive when
2016-10-18 09:10:02 +03:00
Dmitry Petrov
fc754e533d
Enum classes lowering.
2016-10-18 09:09:55 +03:00
Michael Bogdanov
58ba5ed37b
Default args support
2016-10-18 09:09:43 +03:00
Michael Bogdanov
95c88e4445
infrastructure
2016-10-18 09:09:37 +03:00
Michael Bogdanov
ca97f17cb6
Hack: intrinsic package support in typeMapper
2016-10-18 09:09:36 +03:00
Michael Bogdanov
978a4db07b
Introduced IR CodegenFactory, added configuration key to enable it
2016-10-18 09:09:35 +03:00
Michael Bogdanov
1d8b9c5a58
Initial implementation of ExpressionCodegen
2016-10-18 09:09:34 +03:00
Michael Bogdanov
c02ae4a4a5
Initial implemetation of JvmClassGenerator
2016-10-18 09:09:23 +03:00
Michael Bogdanov
4e258df26b
Extract super class info calculation to utility class, make 'signature' static
2016-10-18 09:09:23 +03:00
Dmitry Petrov
e8bacad62b
backend: introduce 'CodegenFactory' interface with default implementation
...
creating PackageCodegen and MultifileClassCodegen from an existing JVM back-end.
2016-10-18 09:09:12 +03:00
Dmitry Petrov
a5d6559056
KT-14360 Microoptimizations in RedundantCoercionToUnitTransformer
2016-10-17 10:13:03 +03:00
Dmitry Petrov
ac675784c1
KT-14357 Run RedundantCoercionToUnitTransformer before DeadCodeEliminatingMethodTransformer.
...
Remove empty try-catch blocks in DeadCodeEliminatingMethodTransformer.
2016-10-17 10:10:46 +03:00
Nikolay Krasko
87b628a3f7
Generate 'nop' instruction on lambda call when everything on line is going to be eliminated by inliner (KT-6477)
...
(cherry picked from commit 462bdb2)
#KT-6477 Fixed
2016-10-14 14:52:06 +03:00
Michael Bogdanov
050139220d
Fix for KT-14330 java.lang.IllegalArgumentException: Parameter specified as non-null is null: method ... parameter value
...
#KT-14330 Fixed
2016-10-14 10:56:15 +03:00
Dmitry Petrov
fbe3f1537f
Make static initializer classes for inheriting multifile class parts annotated as SYNTHETIC_CLASS.
2016-10-14 10:41:20 +03:00
Dmitry Petrov
8d634f6003
KT-14274: resolve type alias constructors calls in supertypes list as type alias constructors.
...
Support @Deprecated for type aliases, including type alias constructors.
2016-10-13 17:52:21 +03:00
Dmitry Petrov
3d0288ffed
Annotations on type aliases: generate synthetic method for type alias annotations.
2016-10-13 17:52:21 +03:00
Valentin Kipyatkov
7b12dd498f
KT-13780 No completion and assertion error in log
...
#KT-13780 Fixed
2016-10-13 15:10:53 +03:00
Dmitry Petrov
71362d6b0a
Cleanup and unify RangeCodegenUtil functions.
2016-10-13 10:11:32 +03:00