Commit Graph

34693 Commits

Author SHA1 Message Date
yantimirov-timur 9e7f6332d1 [FIR] Complete WRONG_SETTER_TYPE_PARAMETER checker 2021-04-05 16:17:34 +03:00
Julia 5472199bb1 [FIR] Introduce supertypes-for-annotation-class checker 2021-04-05 15:54:57 +03:00
Mikhail Glukhikh caeb0b43be FIR: introduce JvmPlatformOverloadsConflictResolver
The added here JvmPlatformOverloadsConflictResolver prefers Java field
to property in case of conflicts.
2021-04-05 15:54:49 +03:00
Andrey Zinovyev 67505a0071 [FIR] Add FINAL_UPPER_BOUND checker 2021-04-05 14:51:44 +03:00
Denis.Zharkov 0637748f10 FIR: Introduce NAMED_PARAMETER_NOT_FOUND diagnostic 2021-04-05 12:58:07 +03:00
Jinseong Jeon 2d42e64c17 FIR: prefer flexible type over other equal types when computing intersection 2021-04-05 10:39:51 +03:00
Jinseong Jeon 0d3969597c FIR: more accurate nullability of intersection of flexible types 2021-04-05 10:39:51 +03:00
Jinseong Jeon 871b5a2174 FIR: fix nullability computation of intersection of flexible types
Without this, currently,

  it(ft(J..J?), ft(J..J?) => J

which should be ft(J..J?) instead.
2021-04-05 10:39:51 +03:00
Dmitriy Novozhilov f1cef0fc95 Update testdata 2021-04-03 16:52:05 +03:00
Dmitriy Novozhilov 69aef01b25 Switch IS_PRE_RELEASE flag to false 2021-04-03 13:13:32 +03:00
Ilya Kirillov 5f9d18d8bc FIR IDE: resolve argument type super types & type args when checking for overridden
When we check overrides from IDE, we need to check argument types for subtyping.
When checking for subtyping, we need type parameters declared
in defining classes to be resolved to TYPES phase
and super types to be resolved to SUPER_TYPES phase.
Otherwise, they will be resolved to RAW_FIR and subtyping will throw
"ISE Expected FirResolvedTypeRef with ConeKotlinType but was FirUserTypeRefImpl"
2021-04-02 17:24:27 +02:00
Ilya Kirillov 5ceec858aa FIR IDE: do not search for sealed class inheritors on every class resolve 2021-04-02 17:15:30 +02:00
Tianyu Geng 3f4fa7eb98 FIR checker: make FirFunctionNameChecker a subclass of FirSimpleFunctionChecker 2021-04-02 17:32:22 +03:00
Tianyu Geng d7cae63cb0 FIR checker: fix UPPER_BOUND_VIOLATED
The diagnostics accepts one parameter for the expected upper bound for
the type parameter.
2021-04-02 17:32:22 +03:00
Tianyu Geng bd64237519 FIR checker: fix checker registration
Previously, composed checker passes the `allXXX` flavor of checkers to
each category of checkrs. This makes the composed checkers
non-transparent: behavior changes after composing. In addition, nested
composing would create redundant checkers.

As a result, some checkers registered in the IDE mode
(org.jetbrains.kotlin.idea.fir.low.level.api.diagnostics.AbstractFirIdeDiagnosticsCollector)
are not invoked with the FIR plugin.

This change does two things:
1. pass on checkers to composed checkers without combining
2. use combined checkers in DeclarationCheckersDiagnosticComponent and
   ExpressionCheckersDiagnosticComponent
2021-04-02 17:32:22 +03:00
Mikhail Glukhikh f0ff9ad5a7 FIR: rename AMBIGUITY to OVERLOAD_RESOLUTION_AMBIGUITY to match FE 1.0 2021-04-02 16:22:01 +03:00
Mikhail Glukhikh e7102cd63f FIR: fix FQ_NAMES_IN_TYPES renderer 2021-04-02 15:11:02 +03:00
Tianyu Geng 761a0a7d0d FIR checkers: report specific errors instead of INAPPLICABLE_CANDIDATE
Specifically, the report the following 4 errors.

* NON_VARARG_SPREAD
* ARGUMENT_PASSED_TWICE
* TOO_MANY_ARGUMENTS
* NO_VALUE_FOR_PARAMETER

Also added/updated the following position strategies.
* NAME_OF_NAMED_ARGUMENT
* VALUE_ARGUMENTS
2021-04-02 14:36:14 +03:00
Tianyu Geng fc8d0e3ee0 FIR checkers: report VAL_REASSIGNMENT for assignment operators
Currently VAL_REASSIGNMENT are only reported on direct assignments.
Reassignments in the form of, for example, `+=` are reported as
`VARIABLE_EXPECTED`, which differs from FE1.0.
2021-04-02 13:33:52 +03:00
Dmitry Petrov eefb6e94a9 Minor: update tests to pass on Android 2021-04-02 10:53:30 +03:00
Mikhail Glukhikh 42d53dd954 FIR: introduce delegated & overridden conflict checks 2021-04-02 10:24:20 +03:00
Mikhail Glukhikh 566dc434cc FIR: introduce MANY_*_MEMBER_NOT_IMPLEMENTED diagnostic 2021-04-02 10:24:20 +03:00
Mikhail Glukhikh 9f27362ee1 Match triangle & diamond intersections in FirTypeIntersectionScope 2021-04-02 10:24:20 +03:00
Dmitry Petrov 19fb7ebfd5 JVM_IR fix local class names for files with @JvmPackageName 2021-04-02 00:08:55 +03:00
Alexander Udalov ce0c0ad2e3 JVM IR: get rid of toIrBasedKotlinType in MethodSignatureMapper
Commonize (in terms of TypeSystemCommonBackendContext implementations
for KotlinType/IrType) code that computes optimal TypeMappingMode to
apply to different positions where inline class types can be present.
2021-04-01 20:17:45 +02:00
Alexander Udalov b59ac5d8f6 JVM IR: do not use old KotlinTypeMapper when coercing inline classes
KotlinTypeMapper.mapInlineClassTypeAsDeclaration and
mapUnderlyingTypeOfInlineClassType invoked mapType which is defined in
descriptorBasedTypeSignatureMapping.kt and works on KotlinType.

It didn't lead to any problems, other than the fact that we were
constructing IrBasedClassDescriptor in JVM IR, and then KotlinType to
pass it to mapType, on each call to StackValue.boxInlineClass or
unboxInlineClass, which seems wasteful.

Instead of this, refactor these utilities to use type markers instead,
pass IrType and IrTypeMapper directly from JVM IR, and move the "static
type mapper" logic (which is used only in the old backend) out of
KotlinTypeMapper.
2021-04-01 20:17:45 +02:00
Ilmir Usmanov b5ecccb610 Enable suspend in fun interfaces by default
#KT-45836 Fixed
2021-04-01 20:26:42 +03:00
Jinseong Jeon 572c0b2ade Raw FIR: make sure loop target preparation and loop configuration match
by using the generated loop target during preparation in a message
passing fashion
2021-04-01 20:07:53 +03:00
Jinseong Jeon bb242f022f FIR renderer: avoid StackOverflow when rendering loop jump condition
For example,
```
do {
  ...
} while(
    when (...) {
      ... -> break
    }
)
```
That `break` condition is `when` expression, and while visiting its
branch result, we will see the same `break` again.
2021-04-01 20:07:52 +03:00
Jinseong Jeon b4a5eec5f4 Raw FIR: correct loop target for break/continue in do-while loop condition
As shown in KT-44412 (or KT-45319 or KT-17728):
```
fun test5() {
    var i = 0
    Outer@while (true) {
        ++i
        var j = 0
        Inner@do {
            ++j
        } while (if (j >= 3) false else break) // break@Inner
        if (i == 3) break
    }
}
```

To properly set the loop target for `break` in do-while loop condition,
the loop target for that do-while loop should be ready before parsing
the loop condition.

Previously, Raw FIR loop building configures loop target after visiting
loop conditions. This commit splits the configuration and lets the
builders prepare the loop target for do-while loop only.
2021-04-01 20:07:50 +03:00
Jinseong Jeon 81999117dc FIR2IR: force return type of loop body block as Unit 2021-04-01 20:07:49 +03:00
Jinseong Jeon 7898d167f3 FIR2IR: wrap do-while loop in IrBlock
"so that variables declared in loop body are not visible outside of the
loop" (from commit d096f1d)
2021-04-01 20:07:47 +03:00
Denis.Zharkov 5cbfb172a4 Ignore new FIR box test on android 2021-04-01 14:52:05 +03:00
Ilya Kirillov c775508f64 FIR IDE: cache function symbols in FirIdeBuiltinSymbolProvider 2021-04-01 11:31:43 +02:00
Denis.Zharkov d685e2aac7 FIR2IR: Fix inheritance case from built-in interface with default methods 2021-04-01 12:11:37 +03:00
Ilmir Usmanov 786999bcfe Minor. Add regression tests
#KT-44143
2021-04-01 00:51:08 +03:00
Ilya Goncharov 368ac36204 [IR] Remove IrExpressionWithCopy and replace with shallowCopy method 2021-03-31 20:14:55 +03:00
Ilya Goncharov 084d824984 [IR] Use deepCopyWithSymbols in IrTypeOperatorCall 2021-03-31 20:14:54 +03:00
Ilya Goncharov 7046f9badd [IR] canHaveSideEffects more robust
By default copyable (IrExpressionWithCopy) declarations is considered as side-effects.

^KT-45655 fixed

[IR] isTrivial more robust

By default copyable (IrExpressionWithCopy) declarations is considered as trivials.

[IR] Use one source of truth for triviality of IrExpression
2021-03-31 20:14:53 +03:00
Ilya Goncharov 47f1a8a0bb [IR] Make IrTypeOperatorCall copyable
^KT-45655 fixed
2021-03-31 20:14:52 +03:00
Ivan Kylchik 2a5153f0fd Move visualizer black box tests generator to separate class 2021-03-31 19:46:23 +03:00
Ilya Gorbunov 94240f7b21 Stabilize unsigned types KT-45653
Deprecate specialized unsigned iterators for removal.

Fix compiler tests:
- drop unsignedLiteralsOn1_2 because apiVersion 1.2 is no longer supported
- drop experimental unsigned literals diagnostic test
2021-03-31 19:05:04 +03:00
Nikolay Krasko 7f60cd81fe CodeConformanceTest for no Bintray except jcenter (KTI-528) 2021-03-31 17:38:59 +03:00
Dmitry Petrov 9bf7f3af04 JVM_IR KT-45697 reference classes from sources before IR generation 2021-03-31 16:40:49 +03:00
Denis.Zharkov 7d211d0d9a Regenerate VisualizerBlackBoxTestGenerated 2021-03-31 15:57:03 +03:00
Denis.Zharkov fa65081878 Revert "FIR2IR: minimize scope processing in fake override generation"
This reverts commit 9934cfbb00.

See the tests added: Subclass may have private same-name method that
should not be a reason to avoid generating fake overrides
2021-03-31 15:57:03 +03:00
Denis.Zharkov 55e5af1111 FIR: Add workaround for flatMap issue 2021-03-31 15:57:03 +03:00
Denis.Zharkov 4d3825a824 FIR: Serialize members originated from delegation 2021-03-31 15:57:03 +03:00
Denis.Zharkov a130b110f1 FIR2IR: Fix incorrect conversion of adapted callable references with receiver 2021-03-31 15:57:02 +03:00
Denis.Zharkov 1f074326bf FIR: Fix Java scope in case of accessor with getter signature from supertype
^KT-45584 Fixed
2021-03-31 15:57:02 +03:00