Commit Graph

3594 Commits

Author SHA1 Message Date
Mikhail Zarechenskiy 4083111dab Fix SAM conversion when lambda is the last expression of another lambda
#KT-39691 Fixed
2020-07-20 14:30:40 +03:00
Mikhail Zarechenskiy a15d3c76b6 Fix references to sam adapted functions, also fix lookup location
#KT-31025 Fixed
2020-07-20 14:30:40 +03:00
Mikhail Zarechenskiy 0c79de1a98 Prohibit adapted reference resolve against reflective types
There are design questions about reflection for adapted references,
 so the current proposal is to prohibit reflection on them and support
 it properly later

 #KT-40406 Fixed
2020-07-20 14:30:39 +03:00
Denis Zharkov cd896ae6c8 FIR: Implement FE 1.0 semantics for super unqualified calls
See original logic at org.jetbrains.kotlin.types.expressions.unqualifiedSuper.UnqualifiedSuperKt#resolveUnqualifiedSuperFromExpressionContext

^KT-39070 Fixed
^KT-39599 Related
2020-07-20 12:24:51 +03:00
Jinseong Jeon 4e14f9500f FIR: account for vararg when creating KFunction type for callable reference 2020-07-20 09:39:34 +03:00
Mikhail Zarechenskiy e5e50eabe9 Update testdata after 41a0cfe002 2020-07-20 07:04:59 +03:00
Nick 41a0cfe002 [FIR] Add diagnostic UPPER_BOUND_VIOLATED 2020-07-16 19:04:22 +03:00
Victor Petukhov e754585e38 NI: add fallback strategy to get lexical scope to checking coroutine call legality
^KT-40247 Fixed
^KT-40337 Fixed
2020-07-16 15:33:27 +03:00
Jinseong Jeon 50f1f8f0eb FIR: consider more functional types during SAM resolution 2020-07-16 12:56:18 +03:00
Ivan Kylchik 85e822e283 [FIR] Support smartcast after reference equality check
#KT-39000 Fixed
2020-07-16 12:43:55 +03:00
Mikhail Zarechenskiy 100a6f70ca Relax rules about inferring to Nothing for special calls
#KT-37388 Fixed
 #KT-38427 Fixed
 #KT-39953 Fixed
 #KT-38899 Fixed
2020-07-16 09:56:46 +03:00
Victor Petukhov b0c96a61ec Don't try to infer postponed variables on lambdas without BuilderInference annotation
^KT-39618 Fixed
2020-07-15 16:19:43 +03:00
Mikhail Zarechenskiy bb23556ead Don't perform Unit-conversion for functional types with type variables
#KT-40269 Fixed
2020-07-14 13:05:28 +03:00
Mikhail Zarechenskiy 09b44b3189 Fix rewrite at slice exception for callable references inside flatMap
#KT-40254 Fixed
2020-07-14 13:05:28 +03:00
Mikhail Zarechenskiy 8158ba2be3 Add tests for obsolete issues
#KT-32183 Obsolete
 #KT-31474 Obsolete
 #KT-31853 Obsolete
2020-07-14 11:23:57 +03:00
Nick 67e58ff152 [FIR] Fix redundant calls to firEffectiveVisibility() 2020-07-13 16:30:47 +03:00
Mikhail Zarechenskiy 678b76cab1 Fix presence of Deprecated hidden annotation for reference arguments
#KT-40234 Fixed
2020-07-13 11:23:28 +03:00
Mikhail Zarechenskiy 0c8b847ae6 Introduce compiler key to disable compatibility resolution mechanism
Enable it if one was using new inferene before 1.4

 #KT-40128 Fixed
 #KT-40112 Fixed
 #KT-40113 Fixed
2020-07-10 14:23:45 +03:00
Mikhail Zarechenskiy 2bb9838a80 Add test for obsolete issue
The problem was fixed in d51bb2c053

 #KT-37692 Obsolete
2020-07-08 15:30:20 +03:00
Dmitriy Novozhilov a5bfa3ae63 [FIR-TEST] Update broken testdata 2020-07-08 12:13:33 +03:00
Dmitriy Novozhilov 58af8d68a1 [FIR] Check for isFun flag in SAM resolution 2020-07-08 12:13:32 +03:00
Dmitriy Novozhilov 29849b1330 [FIR] Resolve rhs of += in dependent context 2020-07-08 12:13:31 +03:00
Juan Chen d163853c97 [FIR] add support for implementation by delgation
This commit handles "subclass: super-interface by delegate-expression".

During Psi2Fir, for each delegate, we add to the subclass a synthetic
field (which has type super-interface), and an assignment of the
delegate-expression to the synthetic field in the primary constructor,
so that the delegate-expression can be resolved and transformed along
the way.

During Fir2Ir, we look up delegatable members from the super-interface
and generate corresponding functions/properties for the subclass.

TODO: support for generic delegatable members and generic
super-interface.
2020-07-08 09:42:24 +03:00
Nick a5f34a880c [FIR] Fix computeTypeArguments() & add diagnostic for type args 2020-07-07 15:52:17 +03:00
Victor Petukhov eec3a4720c NI: don't collect members if a receiver type is StubType to avoid creating error candidates instead of not crating them at all
^KT-37717 Fixed
2020-07-07 11:17:06 +03:00
Dmitriy Novozhilov a0f8ada285 [FIR-TEST] Unmute failing diagnostic tests 2020-07-06 12:11:57 +03:00
Mikhail Zarechenskiy 0ee7306d9c Fix coercion to Unit when variable already have other constraints
Don't add `Unit` if variable has an upper constraint T <: A.

 It's impossible to coerce variable T to Unit as constraint system will
 be always contradictory: T := Unit => Unit should be subtype of A

 #KT-39900 Fixed
2020-07-03 17:54:14 +03:00
Mikhail Zarechenskiy d51bb2c053 Add compatibility resolve when variable has "bad" intersection type
#KT-39468 Fixed
2020-07-03 12:18:28 +03:00
Ivan Kylchik 92a51b9794 [FIR] Add illegal underscore check in BaseFirBuilder 2020-07-03 12:06:49 +03:00
Alexander Udalov ba948cda38 Report warning on characters which can cause problems on Windows
As soon as we fix KT-17438, this warning will be turned into an error.
2020-07-02 21:19:28 +02:00
Dmitriy Novozhilov 102c9c08d0 [FIR] Resolve elvis call as special synthetic call
Before that commit we desugared `a ?: b` as

when (val elvis = a) {
    null -> b
    else -> elvis
}

It was incorrect, because `a` should be resolved in dependent mode,
  but when it was `elvis` initializer it was resolved in independent
  mode, so we can't infer type for `a` in some complex cases
2020-07-02 15:10:51 +03:00
Dmitriy Novozhilov 624b9306f0 [FIR] Resolve LHS of type operator call in independent context
#KT-39046 Fixed
2020-07-02 15:10:51 +03:00
Dmitriy Novozhilov 309050d956 [FIR] Add ExtensionFunctionType attribute
#KT-39034 Fixed
2020-06-30 11:30:19 +03:00
Mikhail Zarechenskiy a2da00eb49 Prohibit using DeprecatedSinceKotlin outside kotlin subpackage 2020-06-29 14:25:08 +03:00
Mikhail Zarechenskiy 790433984b Prohibit using DeprecatedSinceKotlin annotation without arguments 2020-06-29 14:25:08 +03:00
Mikhail Zarechenskiy 67100d5ebe Reject values of DeprecatedSince.. that are not parseable as a version 2020-06-29 14:25:07 +03:00
Mikhail Zarechenskiy 5d88058928 Place DeprecatedSinceKotlin annotation under 1.4 version 2020-06-29 14:25:06 +03:00
Mikhail Zarechenskiy 2f55a3fa0d Add various test for DeprecatedSinceKotlin annotation 2020-06-29 14:23:26 +03:00
Mikhail Zarechenskiy 158013ef3a Remove message and replaceWith parameters from DeprecatedSinceKotlin 2020-06-29 14:22:33 +03:00
Mikhail Zarechenskiy 60c51476f2 Introduce declaration checker for DeprecatedSinceKotlin annotation
- DeprecatedSinceKotlin annotation should only be applicable when
   there's `@Deprecated` annotation on the same declaration
 - Deprecation level shouldn't be specified in the relevant
   `@Deprecated` annotation
 - Check that warningSince <= errorSince <= hiddenSince
2020-06-29 14:22:32 +03:00
Alexander Udalov 0aaf29c045 Introduce DeprecatedSinceKotlin annotation
This annotation will be used in the standard library to prevent the new
compiler from reporting deprecation diagnostics in case an older API
version is used (where the declaration was not deprecated yet).

 #KT-23575 Fixed
2020-06-29 14:22:29 +03:00
Denis Zharkov 9668a60151 FIR: Explicitlty separate static and member scopes
For Java, they have rather different semantics considering "overrides"
and obtaining functions/properties from supertypes

See the Java statics implementation
2020-06-26 16:52:10 +03:00
Mikhail Zarechenskiy a87b25d10e Don't silently ignore argument mismatch for provide delegate
#KT-39816 Fixed
2020-06-26 14:03:49 +03:00
Mikhail Zarechenskiy ea5fef76d1 Fix ambiguity on reference inside blocks of special functions
#KT-37058 Fixed
2020-06-26 14:03:49 +03:00
Mikhail Zarechenskiy c5a2ab2512 Callable reference adaptation should have dependency on API version 1.4
#KT-38069 Fixed
2020-06-26 14:03:47 +03:00
Mikhail Zarechenskiy bc40669598 Prohibit functional interface constructor references
#KT-36706 Fixed
2020-06-26 14:03:47 +03:00
Victor Petukhov cbd8b58d5c Commit trace for callable reference's LHS with reserved syntax like foo?::bar?::bar to avoid the lack of diagnostics reporting
^KT-35075 Fixed
2020-06-25 20:44:58 +03:00
Mikhail Zarechenskiy a5ae1b38b0 Don't skip constraints from equations with the kind equal
The problem was that we didn't incorporate T == Foo into K <: Inv<out T>.
 It happened because of optimisation that isn't applicable here as we
 already have projection in the initial type

 #KT-39777 Fixed
2020-06-24 23:36:59 +03:00
Mikhail Zarechenskiy e7cee9c6e1 Fix coercion to Unit with equal Nothing constraint
#KT-39669 Fixed
2020-06-23 11:47:39 +03:00
Mikhail Zarechenskiy a06c8786df Fix overload ambiguity after smartcast to nullable Nothing
#KT-39544 Fixed
2020-06-23 11:34:19 +03:00