Commit Graph

3957 Commits

Author SHA1 Message Date
Mikhail Glukhikh 11f87e6ca1 No more java Target / Retention loaded. Render java Retention / Target. Related test changes. 2015-07-22 19:00:39 +03:00
Mikhail Glukhikh c2480d1183 Java to Kotlin annotation retention mapping + new test + JvmLoader test adaptation 2015-07-22 19:00:26 +03:00
Pavel V. Talanov 4e0d2bc23c CompileTimeConstantUtils: use getConstant instead of evaluate
Hacky way to avoid passing builtins into this code
2015-07-21 20:52:43 +03:00
Pavel V. Talanov add8387141 Fix some problems with jsCode function
1. Fix a bug in frontend when passing non-String constant led to exception
2. Fix a bug in backend when passing non-JetStringTeplate string constant led to exception
3. Avoid recomputing constant argument in backend
2015-07-21 20:52:42 +03:00
Dmitry Petrov 6437a4bdc6 Support overload ambiguity resolution for callable references by expected type.
Resolve callable references taking into account expected callable types.

This affects call resolution procedure (resolve 'foo' in for 'foo(::bar)') similar to the approach used for function literals:

* During "shape arguments" phase of call resolution, callable references are resolved in independent context without expected type. If the callable reference is ambiguous, its shape type is a function placeholder type without parameter types and return type information. Otherwise, it is a reflection type for the resolved function or property. Upper-level call is resolved without taking into account ambiguous callable references.

* During "complete call" phase of call resolution, resolve callable reference arguments to actual descriptors (if possible), and update constraint system for the given call accordingly.

 #KT-6982 Fixed
 #KT-5780 Fixed
2015-07-21 18:33:15 +03:00
Mikhail Glukhikh 94a00540be Targeting / retention for a set of standard annotations, some inapplicable annotation checks replaced with target check, some fixed tests 2015-07-21 15:36:53 +03:00
Mikhail Glukhikh 9e7a67fabf Warning about java.lang.annotation.Target annotation usage 2015-07-21 15:20:37 +03:00
Mikhail Glukhikh 1309c1f95f Annotation mapper is introduced to map java annotation targets to kotlin targets + a set of new / fixed tests 2015-07-21 15:20:31 +03:00
Denis Zharkov 3ec00114c0 Check type of elvis with expected type info
#KT-6713
2015-07-21 15:16:06 +03:00
Denis Zharkov 58e7923218 Use substituted return type for SAM adapeter of constructor
#KT-7282 Fixed
2015-07-21 15:16:06 +03:00
Denis Zharkov 97af85da9c Change default upper bound of Java type parameters to Any!
#KT-7672 Fixed
2015-07-21 15:16:05 +03:00
Valentin Kipyatkov 4ec26de2a8 Changes on code review 2015-07-21 08:32:51 +03:00
Valentin Kipyatkov 31b7c33fa8 No need to scan base classes 2015-07-21 08:32:51 +03:00
Valentin Kipyatkov 1c52f8a524 Fixed synthetic properties for method inherited from two bases 2015-07-21 08:32:51 +03:00
Valentin Kipyatkov 612c009f6b Synthetic properties: correct behaviour for method hierarchies 2015-07-21 08:32:51 +03:00
Valentin Kipyatkov 367e294452 No synthetic properties in java class for methods inherited from Kotlin 2015-07-21 08:32:50 +03:00
Valentin Kipyatkov d2fb7381ce Tested one more case 2015-07-21 08:32:50 +03:00
Valentin Kipyatkov 4a8adacedd Changed policy for properties from methods like "getURL()"" 2015-07-21 08:32:50 +03:00
Valentin Kipyatkov 23cfe88b71 KT-8530 Synthetic properties doesn't work with smart casts
#KT-8530 Fixed
2015-07-21 08:32:50 +03:00
Valentin Kipyatkov b6027a0efe Changed synthetic properties naming for getters starting with "is" 2015-07-21 08:32:49 +03:00
Nikolay Krasko 9648338b19 Enum with interface keywords leads to fail in DeclarationChecker 2015-07-17 20:59:03 +03:00
Nikolay Krasko 71b406d792 Fix class kind detector: prioritize enum over annotations. Introduce new error about enum annotations classes. 2015-07-17 20:59:02 +03:00
Mikhail Glukhikh 0d0fc2802f Built-in test fixed 2015-07-17 13:26:49 +03:00
Mikhail Glukhikh af5e7f58da Implementation of Kotlin's 'target' annotation mapping to Java's 'Target' annotation + tests 2015-07-17 12:05:27 +03:00
Mikhail Glukhikh 2a1058ed63 Some usages of JetClassOrObject.isAnnotation() are removed. Related test fixed. 2015-07-17 12:05:19 +03:00
Mikhail Glukhikh 7f12965741 Suppress test corrected 2015-07-17 12:05:15 +03:00
Pavel V. Talanov 2896ec67ba Support synthetic java properties in REPL
Use brand new iterable injection
2015-07-16 18:05:44 +03:00
Valentin Kipyatkov 28e9fbf9b8 Correct synthetic extensions for methods like "getURL" 2015-07-16 13:49:18 +03:00
Valentin Kipyatkov 22e631dda3 Naming with "is" supported for synthetic extensions 2015-07-16 13:49:18 +03:00
Valentin Kipyatkov 2ec6f50402 Set method should not accept vararg 2015-07-16 13:49:15 +03:00
Valentin Kipyatkov 82f1eafa0b No synthetic properties of type Unit 2015-07-16 13:49:15 +03:00
Valentin Kipyatkov 08754b9fc0 Support for synthetic extensions in codegen 2015-07-16 13:49:13 +03:00
Valentin Kipyatkov 2e351f3e4d Initial implementation of synthetic extensions resolve 2015-07-16 13:49:13 +03:00
Pavel V. Talanov c313887641 Split CompileTimeConstant into two entities
1. ConstantValue
	* just holds some value and its type
	* implementations for concrete constants
2. CompileTimeConstant
	* is only produced by ConstantExpressionEvaluator
	* has additional flags (canBeUsedInAnnotation etc)
	* has two implementations TypedCompileTimeConstant containing a constant value
		and IntegerValueConstant which does not have exact type
	* can be converted to ConstantValue

Adjustt usages to use ConstantValue if flags are not needed
Add tests for some uncovered cases
2015-07-16 02:28:05 +03:00
Denis Zharkov d19cb747be Emit not-null assertions for enhanced types 2015-07-15 10:01:14 +03:00
Denis Zharkov e23c7f457b Preserve type annotations on type parameter when substituting
Subsitute(@A T, T:@B String) = @B @A String

Nullability when loading Java:
Subsitute(@NotNull T, T:String) = @NotNull String
Subsitute(@NotNull T, T:String!) = @NotNull String
Subsitute(@NotNull T, T:String?) = @NotNull String

Subsitute(@Nullable T, T:String) = @Nullable String?
Subsitute(@Nullable T, T:String!) = @Nullable String?
Subsitute(@Nullable T, T:String?) = @Nullable String?
2015-07-15 10:01:14 +03:00
Dmitry Jemerov 0295b13cc7 couple more tuple leftovers 2015-07-14 17:14:33 +02:00
Dmitry Jemerov 55c11539f8 drop tuples support from parser 2015-07-14 17:06:17 +02:00
Mikhail Glukhikh 37b2e97e56 Rendering changed: "annotation class" is now just "class" (with kotlin.annotation.annotation if it's kotlin annotation).
A swarm of tests fixed accordingly.
2015-07-14 16:25:08 +03:00
Mikhail Glukhikh 0d2a81f098 Annotation target checking in front-end, a set of tests for different annotation targets, existing test fixes
No checks for erroneous annotations. Additional checks for identifiers.
2015-07-14 16:25:04 +03:00
Mikhail Glukhikh 609d696202 Annotations have now retention of "RUNTIME" by default. Java retention is generated as given by kotlin annotation. Annotation rendering changed.
Annotation arguments with default values are rendered as ... if renderDefaultAnnotationArguments is true.
Tests: java retention does not taken into account by Descriptor comparator.
Java retentinon changed to kotlin retention in some tests + one new test with java retention added.
More accurate tests for intentions in byte code (visibility controlled).
2015-07-14 16:25:01 +03:00
Mikhail Glukhikh 1eac4d67de "annotation" is now parsed as an identifier. It is no longer a soft keyword.
Sometimes it's allowed to parse "annotation" unescaped even if other annotations must be escaped.
A set of annotations and their options tests.
A swarm of existing tests fixed (mostly kotlin.annotation.annotation() added to txt-files).
STUB_VERSION increased. Some quick fixes slightly changed.
2015-07-14 16:24:55 +03:00
Mikhail Glukhikh 7a6e5f66bd Regression test: char + int = char 2015-07-14 16:24:52 +03:00
Mikhail Glukhikh 5126f01452 kotlin.annotation package with annotations "target" and "annotation" and enums AnnotationTarget and AnnotationRetention introduced.
Targets for existing built-in annotations.
Access to annotation package from packageFragmentProvider.
Documentation for all classes in the package.
2015-07-14 16:24:45 +03:00
Svetlana Isakova b162a65e85 Changed the way the constraints are written in tests
SUBTYPE T Int -> T <: Int
2015-07-13 21:57:59 +03:00
Ilya Gorbunov 4ad6a8e301 Ensure type of a stack value is coerced to the expected return type after the binary operation instruction with the different return type. 2015-07-13 17:27:37 +03:00
Alexander Udalov 4de2c5a5c8 Don't generate default no-args constructor for enums
#KT-8438 Fixed
2015-07-13 11:59:35 +03:00
Alexander Udalov 290983687d Fix generation of bridges for lambdas
#KT-8447 Fixed
2015-07-10 20:10:16 +03:00
Dmitry Petrov 5dc28f1313 KT-7507 Check expected type for class literal expression 2015-07-10 20:10:15 +03:00
Dmitry Petrov d540ff8890 KT-8206 java.lang.NoSuchFieldError: $kotlinClass for deprecated::class
Instantiate class literals for annotation classes as foreign.
2015-07-10 20:10:15 +03:00