Commit Graph

13498 Commits

Author SHA1 Message Date
Mikhail Glukhikh 2e14b65644 Introduce FirForLoopChecker 2021-04-19 15:10:58 +03:00
Mikhail Glukhikh eb831b9afc FIR: support separate ANONYMOUS_FUNCTION_WITH_NAME 2021-04-19 15:10:38 +03:00
Mikhail Glukhikh 6b95bcdbdb FIR: support separate ASSIGNMENT_IN_EXPRESSION_CONTEXT 2021-04-19 15:10:18 +03:00
Mikhail Glukhikh 9894b97058 FIR: rename EXPRESSION_REQUIRED to EXPRESSION_EXPECTED 2021-04-19 15:09:50 +03:00
Dmitriy Novozhilov 7fb2bf00c5 Force resolve annotations in annotation checker
#KT-46173 Fixed
2021-04-19 14:32:36 +03:00
Ivan Kochurkin 4353365968 [FIR] Implement NULL_FOR_NONNULL_TYPE diagnostics, fix tests 2021-04-19 12:46:08 +03:00
Dmitriy Novozhilov b530427bb2 Fix substitution of generic types in contracts
#KT-41078 Fixed
2021-04-16 17:23:24 +03:00
Dmitriy Novozhilov 91fedd6a12 [FIR] Substitute types from arguments in evaluating of contract
#KT-41078
2021-04-16 17:23:22 +03:00
Dmitriy Novozhilov 564de2790f [FIR] Resolve array literals in independent context 2021-04-16 11:12:56 +03:00
Dmitriy Novozhilov e869f8091a [FIR] Properly handle callable references which were resolved with error 2021-04-16 11:12:55 +03:00
Ilya Gorbunov 8041c3aa1d Support Char.code in constant evaluator, KT-46036
But do not consider Char.code a pure integer constant.
2021-04-16 03:58:34 +03:00
Dmitry Petrov e89ab71bf8 JVM_IR KT-45934 don't generate declaration stubs for delegates 2021-04-15 17:59:19 +03:00
Dmitry Petrov cc415f62b5 JVM_IR KT-46092 fix array spread operator in Kotlin->Java call 2021-04-15 17:11:21 +03:00
Mikhail Glukhikh 9b3f1b9b8a Inference: handle Exact constraints with captured types properly
#KT-41818 Fixed
2021-04-15 15:55:41 +03:00
Mikhail Glukhikh 51d348d5fa FIR: report FUN_INTERFACE_CONSTRUCTOR_REFERENCE on deserialized properly
This fixes KT-46100 for FIR
2021-04-15 15:54:18 +03:00
Ilya Kirillov 0cf00d0f72 FIR: fix FirDefaultPropertyAccessor phase to BODY_RESOLVE 2021-04-15 15:23:56 +03:00
pyos 82cadba80b FIR: report errors on FirResolvedTypeRef with ConeClassErrorType
Not sure what the difference from FirErrorTypeRef is.
2021-04-15 14:59:30 +03:00
pyos 0a25550fc2 FIR: allow fun (x: T) ... as an instance of T.() -> ...
and disallow > 1 implicit parameters in lambdas.
2021-04-15 14:59:28 +03:00
pyos 354acc1fd5 FIR: permit * as FunctionN type argument
`() -> *` is not valid, but `F<*>` where `typealias F<T> = () -> T` is.
2021-04-15 14:59:27 +03:00
Denis.Zharkov 32dacc37c0 FIR: Fix OverloadResolutionByLambdaReturnType case 2021-04-15 14:48:20 +03:00
Ilmir Usmanov 1c48fb28db Generate return when generating continuation class for expression body
Otherwise, the function will return Unit instead of correct value.
 #KT-46007 Fixed
2021-04-15 13:54:45 +03:00
Pavel Punegov c988ecf59b Ignore test in native backend due to the KT-44037 (KT-38181) 2021-04-15 07:59:26 +00:00
Pavel Punegov 0f5edaa02f Ignore test in the native backend. It redefines JvmInline class 2021-04-15 07:59:24 +00:00
Tianyu Geng 4d2e3a2379 FIR: Fix resolving += to ignore + if it doesn't return correct type
This is the FIR fix of the FE change tracked by
https://youtrack.jetbrains.com/issue/KT-45503

Consider the following code:

```
fun foo() {
  var l = mutableListOf("")
  l += ""
}
```

The above code used to be considered invalid due to ambiguous `+=`. But
after KT-45503, it's now considered valid code because `plus` is not
really a valid option for this code. This is because the return type
of `plus` for `List` is `List`, which does not match the type of
variable `l`.

As for now, FIR rejects the above code due to ambiguous `+=`. This
change fixes that by also consider the return type when resolving `+=`.
2021-04-15 10:34:05 +03:00
Dmitry Petrov f1eeb72c01 PSI2IR KT-46069 resolve IR-based type parameter descriptors to symbols 2021-04-14 21:27:01 +03:00
ebukreev d8a2f82cbd FIR: inroduce FirFunInterfaceConstructorReferenceChecker 2021-04-14 19:53:43 +03:00
Dmitry Petrov 531a0de399 JVM_IR KT-46060 'contains' operator without receiver is non-optimizable 2021-04-14 19:18:42 +03:00
Mark Punzalan 21a3a14289 FIR: Use intersection of all upper bounds for parameterized types in
ConeKotlinType.canBeNull.

^KT-45903 In progress
2021-04-14 19:17:10 +03:00
Dmitriy Novozhilov 1f0ecade34 [FIR] Transform annotations of type refs in body resolve stage
Also fix building CFG for annotation calls
2021-04-14 18:30:56 +03:00
Dmitriy Novozhilov aec13defc4 [Test] Add proper annotation target in SupertypesAndBounds test 2021-04-14 18:30:55 +03:00
Dmitriy Novozhilov 0b2943d34c Prohibit using annotations without TYPE target in several type positions
#KT-8325 Fixed
#KT-19455 Fixed
#KT-25876 Fixed
#KT-28449 Fixed
2021-04-14 18:30:54 +03:00
Dmitriy Novozhilov bee2a69e21 Implement new logic of approximation of integer literals in position of receiver
#KT-38895 In Progress
2021-04-14 18:30:52 +03:00
Dmitriy Novozhilov 6afb905ad6 Add deprecation warning about new integer operators on literals resolution
#KT-38895
2021-04-14 18:30:51 +03:00
Dmitriy Novozhilov 53b6d6f767 Prohibit references to members of containing class in super constructor of nested object
#KT-25289 In Progress
2021-04-14 18:30:49 +03:00
Andrey Zinovyev 0d525bbe85 [FIR] Add MISPLACED_TYPE_PARAMETER_CONSTRAINTS check 2021-04-14 18:11:17 +03:00
Andrey Zinovyev 412b941486 [FIR] Add DEPRECATED_TYPE_PARAMETER_SYNTAX check 2021-04-14 18:11:16 +03:00
Andrey Zinovyev 2b8c22c08a [FIR] Add CYCLIC_GENERIC_UPPER_BOUND check 2021-04-14 18:11:14 +03:00
Andrey Zinovyev 03215f4e0a [FIR] Add TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER check 2021-04-14 18:11:13 +03:00
Andrey Zinovyev 470993ac07 [FIR] Add TYPE_PARAMETERS_NOT_ALLOWED check 2021-04-14 18:11:12 +03:00
Andrey Zinovyev 5ff82addc9 [FIR] Add REIFIED_TYPE_PARAMETER_NO_INLINE check 2021-04-14 18:11:10 +03:00
Andrey Zinovyev 14fe570a00 [FIR] Add more type params checks
VARIANCE_ON_TYPE_PARAMETER_NOT_ALLOWED
BOUND_ON_TYPE_ALIAS_PARAMETER_NOT_ALLOWED
2021-04-14 18:11:09 +03:00
Ting-Yuan Huang 6c989bfd4b Support array of annotation in KotlinJvmBinaryClass
KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor didn't cover the
case when the element type is an Annotation. Therefore, when the
compiler read an array of annotations from JVM binary classes built from
Kotlin sources, it got an empty array regardless of what was written in
the bytecode.

For example, Foo.value below is read as an empty array when SomeClass
resides in another Kotlin module.

  @Foo(
    value = [Bar(1), Bar(2)]
  )
  class SomeClass
2021-04-14 13:14:26 +02:00
Ilmir Usmanov 74b1fdcc60 Minor. Add regression test
#KT-45991
2021-04-14 10:48:59 +02:00
Ilmir Usmanov 29c975fc43 Minor. Add regression test
#KT-45539 Obsolete
2021-04-14 10:48:57 +02:00
Ilmir Usmanov 19b1b48e87 Minor. Add tests to check returning inline class from default method
#KT-45539 Obsolete
2021-04-14 10:48:54 +02:00
Steven Schäfer 7a9ff15d73 JVM IR: Handle suspend interface default methods with generic types (KT-45166) 2021-04-13 23:04:32 +02:00
Dmitry Petrov 7d62f0b5aa JVM_IR KT-45187 use Arrays.copyOf to copy an array in spread operator
Creating a new array (and copying data into it with System.arraycopy)
doesn't work in generic case, because the actual array class depends on
call site.
2021-04-13 22:27:37 +03:00
zadorotskas 334d0a8b5a FIR: introduce three diagnostics for const val 2021-04-13 21:36:46 +03:00
Mikhail Glukhikh 69d1ef423a FIR initializer: don't report type mismatch on incompatible extensions
This commit suppresses type mismatch error from KT-45989
2021-04-13 21:36:36 +03:00
Mikhail Glukhikh fa4d664a18 FIR initializer: don't report type mismatch in SomeInt = Int case 2021-04-13 21:36:34 +03:00