5747 Commits

Author SHA1 Message Date
Alexander Udalov fbf9f5f7d0 Don't generate bridges for equals(), hashCode(), toString()
Otherwise an assertion is failing in the algorithm which is related to an
inconsistency of java.lang.Object inheritance in JDR (KT-4890)
2014-04-24 16:10:12 +04:00
Alexander Udalov 79e7ee91e4 Generate bridges for trait implementations properly
The intent was to keep the bridge codegen model as simple as possible: we
should be able to figure out all necessary bridges only by a minimal interface
that FunctionHandle provides (isAbstract, isDeclaration, getOverridden)

Add different tests for bridges

 #KT-318 Obsolete
2014-04-11 21:57:47 +04:00
Alexander Udalov b0db6a4526 Rewrite bridge generation to Kotlin, make it abstract 2014-04-11 21:57:46 +04:00
Alexander Udalov fc838dbb53 Refactor ImplementationBodyCodegen.getTraitImplementations()
Make it static, extract a method which finds an implementation in a trait for a
fake override
2014-04-11 21:57:46 +04:00
Alexander Udalov 478766815d Consider all real functions, not only declarations in bridge codegen
There should be bridges to all of the functions present in bytecode
2014-04-11 21:57:45 +04:00
Alexander Udalov 04c237cc22 Generate bridges for fake overrides when needed
#KT-3985 Fixed
 #KT-4145 Fixed
2014-04-11 21:57:44 +04:00
Mikhael Bogdanov e2f3a589e7 KT-3308 Support local generic functions in codegen
#KT-3308 Can'tReproduce
2014-04-01 11:18:16 +04:00
Mikhael Bogdanov 4269729b0a KT-3214: Verify error when get array convention is used with varargs
#KT-3214 Can'tReproduce
2014-04-01 11:18:16 +04:00
Mikhael Bogdanov 596dc68ea4 KT-4340: Jvm backend generates invalid synthetic accessor for private extension property 2014-04-01 11:18:15 +04:00
Mikhael Bogdanov 0d239a3e0e Moving local fun callee generation to CallReceiver 2014-03-31 20:04:10 +04:00
Mikhael Bogdanov c7c1e33655 Move local fun callee generation to pushArgumentsWithCallReceiver.
Local fun callee generation via resolvedCall.resultingDescriptor not call
2014-03-31 20:03:43 +04:00
Alexander Udalov ea4daed0ac Use FqNameUnsafe instead of FqName in JVM intrinsics
#KT-4777 Fixed
2014-03-27 22:46:44 +04:00
Alexander Udalov 0deea6b83c Add test for obsolete issue
#KT-1936 Obsolete
2014-03-27 03:06:59 +04:00
Evgeny Gerashchenko 537c03fb1a Added test checking that initialization order in package part is not violated. 2014-03-25 14:31:41 +04:00
Svetlana Isakova a829da185d Resolve invoke on any kind of expressions, not only on simple name expressions 2014-03-20 10:05:24 +04:00
Alexander Udalov 7a2fce4fba Add regression tests for obsolete issues
#KT-2592 Obsolete
 #KT-2768 Obsolete
2014-03-16 03:18:26 +04:00
Svetlana Isakova 4771986b32 KT-4656 Wrong capturing a function literal variable.
#KT-4656 Fixed
 Reference for calleeExpression is recorded only in 'doResolveCallOrGetCachedResults'.
2014-03-08 20:55:45 +04:00
Andrey Breslav 2a0ccb95b1 Support quotes at the end of a raw string
Fix for KT-4650 Can't use double quote at the end of the raw string

#KT-4650 Fixed
2014-03-07 19:38:58 +04:00
Alexander Udalov f7b6457139 Replace "jet" package name with "kotlin" in testData 2014-03-02 19:55:26 +04:00
Alexander Udalov 5d6d4406cb Move FunctionImpl classes from package "jet" to "kotlin" 2014-03-02 19:54:56 +04:00
Alexander Udalov b68e47f705 Move JVM-specific annotations out of built-ins
Move 'volatile' and 'synchronized' to package 'kotlin' in stdlib. Also delete
'atomic', since its support was never implemented
2014-03-02 19:54:55 +04:00
Alexander Udalov 774e5f0535 Sort out JVM intrinsics for equals, hashCode, toString 2014-03-02 19:54:55 +04:00
Alexander Udalov 3dcd85bdb4 Add toString() to Any, fix all tests
#KT-4517 Fixed
2014-03-02 19:54:49 +04:00
Alexander Udalov ec30d52978 Delete Hashable, pull up its members to Any
Extensions on nullable types remain in Library.kt

 #KT-1741 Obsolete
 #KT-2805 Obsolete
 #KT-1365 Fixed
 #KT-4517 In Progress
2014-03-02 19:54:08 +04:00
Alexander Udalov 4968afebf8 Don't generate bodies of built-in stub methods into interfaces 2014-02-24 21:44:42 +04:00
Alexander Udalov 4a603f1268 Minor, specify types for clarity 2014-02-21 20:38:02 +04:00
Alexander Udalov eb7b757e38 Fix VerifyError on rangeTo on primitive types 2014-02-19 17:46:18 +04:00
Alexander Udalov 8b918ef1aa Add regression tests for obsolete issues
#KT-1291 Obsolete
 #KT-2895 Obsolete
 #KT-3060 Obsolete
 #KT-3298 Obsolete
 #KT-3613 Obsolete
 #KT-3862 Obsolete
2014-02-13 04:43:53 +04:00
Alexander Udalov a98434263b Add regression test for outdated issue
#KT-3738 Obsolete
2014-02-12 19:17:55 +04:00
Alexander Udalov 35c7c4afd8 Fix capturing outer this in some cases in JVM codegen
When property initializer of some inner entity (e.g. anonymous object) contains
a reference to some outer entity (say, a property of the outer class), we need
to make sure we called "lookupInContext" on this entity's owner class, so that
"setCaptureThis" was called on the appropriate closure

 #KT-4176 Fixed
2014-02-12 19:17:55 +04:00
Svetlana Isakova 9d493b6f7b generate CHECK_CAST for smartcasted 'this' 2014-02-12 12:48:11 +04:00
Mikhael Bogdanov e0ca1abe4b KT-3706 Inconsistent stack height in try catch finally in function
KT-4134 Incorrect bytecode is generated for

 #KT-3706 Fixed
 #KT-4134 Fixed
2014-02-07 13:45:22 +04:00
Alexander Udalov 75ab8ac5ec Don't try to generate optimized "in" for LongRange
#KT-4097 Fixed
2014-01-31 16:46:14 +04:00
Andrey Breslav ab7d8a7734 Tests for abstract functions with default arguments 2014-01-23 17:59:18 +04:00
Alexander Udalov 0e352aa57a Rename test functions to avoid clashing with JUnit
Android JVM tests run codegen test data with JUnit in classpath
2014-01-23 15:21:54 +04:00
Alexander Udalov 09e772ff61 Make comparison with NaN consistent with javac 2014-01-22 21:20:09 +04:00
Alexey Sedunov adddb70e50 Add codegen tests for local classes/objects declated in class initializers or class parameter initializers 2014-01-15 16:49:28 +04:00
Evgeny Gerashchenko 958f7c862d Got rid of "namespace" word in test data. 2014-01-14 18:06:50 +04:00
Alexander Udalov 7041a10ecf Fix VerifyError on primitive override properties
Don't just blindly map property type in PropertyCodegen when generating getter:
we already have its full signature, so we can just as well take the type from
it. The former also isn't correct for properties which are overrides with a
primitive type. Simple mapType is safe for setter though, because the type of a
method parameter cannot change with override on JVM

The change in StackValue relates to call sites of properties which return Unit:
in that case StackValue's this.type is V, whereas the return type of its getter
is Ljet/Unit; -- so coerceTo was coercing from the wrong type in case of getter
calls

 #KT-4373 Fixed
 #KT-4383 Fixed
2014-01-14 17:52:27 +04:00
Mikhael Bogdanov c9c50e4107 KT-4348: Array access operator overloading doesn't work with vararg's
#KT-4348 Fixed
2013-12-26 17:07:58 +04:00
Evgeny Gerashchenko 513be47544 KT-4349 Make jet.Boolean implement Comparable
#KT-4349
2013-12-25 21:07:55 +04:00
Alexander Udalov 571adf3acc Support references to local extensions in codegen 2013-12-24 20:41:20 +04:00
Alexander Udalov d3a811aa7e Support closures in codegen for callable references 2013-12-24 20:41:20 +04:00
Alexander Udalov 596b1622a3 Add tests on callable references
Object members and accessors for private class members
2013-12-24 20:41:20 +04:00
Alexander Udalov 363fe607fc Support local function references in codegen
#KT-3704 In Progress
 #KT-1183 In Progress
2013-12-24 20:41:19 +04:00
Natalia Ukhorskaya 4329c42e3f Make unary minus and unary plus return int for byte and short 2013-12-23 13:46:00 +04:00
Natalia Ukhorskaya 7a9d822070 'As' function for constants 2013-12-17 15:00:30 +04:00
Natalia Ukhorskaya 66effee8cd Fix safe call 2013-12-16 20:54:09 +04:00
Natalia Ukhorskaya 4ef1af7d12 Cast unary intrinsics to expected type 2013-12-16 17:12:40 +04:00
Alexander Udalov 0576851102 Fix codegen for closures returning 'Unit?'
Only do a checkcast when we need to coerce Object to Unit: the code was
hopefully type-checked so that it'll only be necessary when the value is either
Unit.VALUE or null
2013-12-12 21:38:20 +04:00