Commit Graph

59 Commits

Author SHA1 Message Date
Dmitriy Novozhilov bb38690273 [FIR] Introduce FirAssignExpressionAltererExtension
This extension can be used to override resolution of assign statements
  with custom statement
2022-08-19 07:44:09 +00:00
Simon Ogorodnik 513af2dfbc FIR. Refactor smart-cast representation in FIR tree
Make smart-casts non-transparent expression without delegation
to underlying FirQualifiedAccessExpression, as children delegation in
fir tree has unclear semantics
Remove two different kinds of tree nodes for smart-casts
2022-08-15 21:46:11 +00:00
Ilya Kirillov 0748f28efe [FIR] rename ensureResolve -> lazyResolveToPhase as it better describes function semantics 2022-08-10 22:49:18 +02:00
Mikhail Glukhikh 3e58c54da9 Add docs to CandidateApplicability, remove DSL_SCOPE_VIOLATION 2022-07-27 15:29:48 +00:00
Mikhail Glukhikh 010d5b76e5 Temporary fix for K2/JS tests 2022-07-27 15:29:46 +00:00
Mikhail Glukhikh 0611f3b8e7 CandidateApplicability: add K1/K2 prefixes when applicable 2022-07-27 15:29:44 +00:00
Mikhail Glukhikh 8e9e8302f7 CandidateApplicability: merge INAPPLICABLE_MODIFIER into CONVENTION_ERROR 2022-07-27 15:29:43 +00:00
Mikhail Glukhikh 32a73968de Stop tower resolve in K2 in more similar manner with K1 2022-07-27 15:29:41 +00:00
Mikhail Glukhikh 801426d0e6 Simplify creation of FirRenderer 2022-07-14 09:38:44 +00:00
Mikhail Glukhikh 3fe35e6997 Extract separate FirCallArgumentsRenderer 2022-07-14 09:38:39 +00:00
Mikhail Glukhikh 7c27e6f843 FirRenderer: partially get rid of RenderMode 2022-07-14 09:38:37 +00:00
Mikhail Glukhikh 089044e5b0 FirRenderer: get rid of direct Visitor usages 2022-07-14 09:38:34 +00:00
Mikhail Glukhikh 998ed8849f FirRenderer: drop effectively unused renderLambdaBodies parameter 2022-07-14 09:38:34 +00:00
Mikhail Glukhikh a82baf87cb FIR renderer: extract separate ConeTypeRenderer 2022-07-14 09:38:33 +00:00
Mikhail Glukhikh f64a7d3ff9 FirRenderer: extract separate printer & visitor 2022-07-14 09:38:32 +00:00
Mikhail Glukhikh 38d6f3d548 Move FirRenderer to separate package 2022-07-14 09:38:31 +00:00
Mikhail Glukhikh 065e852199 FIR: support more precise diagnostics about parameter names
#KT-52762 Fixed
2022-06-20 11:28:55 +00:00
Ivan Kochurkin 9c67a4bc27 [FIR] Remove not used ConeArgumentTypeMismatchCandidateError 2022-06-17 23:26:19 +00:00
Ivan Kochurkin c3638d2219 [FIR] Remove not used ConeUnsupportedDynamicType 2022-06-17 23:26:19 +00:00
Ivan Kochurkin ffbb23661d [FIR] Report UNSUPPORTED for default value in function type 2022-06-17 23:26:18 +00:00
pyos c2ae74c7cd FIR CFG: when unifying flows, group statements by assignment
Consider a function `run2` that has 2 lambda arguments called in place.
We don't know the order in which they're called, so here:

    var x: Any? = something
    run2(
      { x = null },
      { x as String },
    )
    // <--

it's not correct to simply `&&` the statements together, as that would
produce `x is Nothing? && x is String && x is Any?`. Instead, statements
should be grouped by assignment first, and different groups are `||`-ed.
This means in the above example we now get `x is Nothing? || (x is Any?
&& x is String)` == `x is String?`.
2022-06-15 20:05:50 +00:00
pyos 63b0708ed5 FIR CFG: join/unify data flow from postponed lambdas at each level
For example:

    foo(
        // `if` joins A & B
        if (condition)
            run { ... } // A
        else
            run { ... }, // B
        run { ... } // C
    ) // `foo` unifies `A & B` and `C`, so if it is not resolved itself,
      // further `if`s, `when`s, safe calls outside it, etc. continue
      // building the correct type predicate until the next completed
      // call.

^KT-44512 Fixed
2022-06-15 20:05:49 +00:00
Denis.Zharkov 6e6d576a44 Minor. Drop unused addReceiverLabelAlias 2022-06-06 09:39:28 +00:00
Mikhail Glukhikh eaa77b5af6 [FIR JS] Generate dynamic FIRs via DynamicScope 2022-06-02 13:47:26 +00:00
Victor Petukhov 867ad24c86 [FE] Show causing types in the INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION diagnostic 2022-05-27 15:14:24 +00:00
Victor Petukhov 6a34b184ac [FE] Introduce warnings on possible empty intersection types, and improve errors reporting in general
^KT-52361 Fixed
2022-05-27 15:14:23 +00:00
Victor Petukhov c16ae81a48 [FIR] Report errors for upper bounded type variables by an empty intersection type
^KT-51221 Fixed
2022-04-27 19:50:21 +00:00
Aleksei.Cherepanov 3d8f140d6b [JPS] Fix incremental build after changing Java enum used in Kotlin when
EnumWhenTracker implemented for tracking changed java enum class items, that used in kotlin when expression.

#KT-47824 Fixed
2022-04-19 18:39:41 +00:00
Denis.Zharkov 41bc842b9d FIR: Support context receivers in Fir2Ir 2022-04-06 16:05:39 +00:00
Denis.Zharkov 512446843b FIR: Support typeRef-name label for this 2022-04-06 16:05:37 +00:00
Denis.Zharkov ef84dddc88 FIR: Add preliminary support for context receivers in resolution 2022-04-06 16:05:32 +00:00
Ivan Kochurkin c7122c1492 [FIR] Fix break/continue in try-finally in loop, ^KT-51759 2022-04-05 15:50:47 +00:00
Dmitriy Novozhilov effa3f197a [FIR] Move ReturnTypeCalculator to :fir:providers module
Also make it an abstract class and turn ReturnTypeCalculatorForFullBodyResolve
  into object (because it has no state and there is no need to create
  different instances of it)
2022-04-04 15:23:56 +00:00
Mikhail Glukhikh b327f5c731 Substitute type variables properly in ConeOverloadConflictResolver
#KT-46187 Fixed
2022-03-23 09:54:46 +00:00
Mikhail Glukhikh c8453ec8b4 FIR: report ambiguity-like errors in type resolve 2022-03-10 20:42:42 +00:00
Mikhail Glukhikh 981f8b1871 FIR: implement resolve of unqualified enum references in when
See KT-16768
2022-02-22 22:13:06 +03:00
Dmitriy Novozhilov 851305f981 [FIR] Allow smartcasts on member properties for classes from dependsOn dependencies 2022-02-18 17:44:37 +03:00
Dmitriy Novozhilov 0bd3e8f418 [FIR] Rename ConeClassErrorType to ConeErrorType, drop ConeKotlinErrorType alias 2022-02-07 13:36:33 +03:00
Denis.Zharkov 6f89f1ebf4 FIR: Allow selector of safe calls to be a FirStatement
It's necessary to allow a?.b += v be interpreted as a?.(b += v)
But currently FirAssignmentOperatorStatement is not FirQualifiedAccess

^KT-41034 In Progress
2022-02-01 13:12:45 +03:00
Ivan Kochurkin ee7e04b28e [FIR] Ignore smartcast for non-final members from Java, ^KT-50219 Fixed 2021-12-21 19:10:40 +03:00
Ivan Kochurkin 9e55e41d8b [FIR] Propagate non-null info for val members, ^KT-44560 Fixed 2021-12-21 19:10:38 +03:00
Ivan Kochurkin c5a03d0573 [FIR] Remove dependent data flow variables after receiver reassignment 2021-12-21 19:10:37 +03:00
Ivan Kochurkin 1f9ea50d1a [FIR] Rearrange arguments in VariableStorageImpl functions to make them consistent 2021-12-21 19:10:36 +03:00
Vyacheslav Gerasimov f7a9065b75 Build: Use intellij maven repo instead of downloaded IDEA
#KTI-82
2021-12-16 21:48:23 +03:00
Simon Ogorodnik b45b624945 FIR: Fix integrating DeclaredUpperBound positions in builder inference 2021-12-15 22:23:01 +03:00
Mikhail Glukhikh 4d9e919f7e FIR: preliminary refactoring of delegate resolve 2021-12-15 22:22:51 +03:00
Tianyu Geng 58067e0a1e FIR checker: carry original candidate in ConeDiagnosticWithCandidates
This is needed by IDE when resolving calls because candidates carry more
information than just the targeting symbol.
2021-12-06 12:40:42 +01:00
Dmitriy Novozhilov 1f0b62b25f [FIR] Add smartcasts from == if equals is from Any
^KT-49127 Fixed
2021-12-03 14:19:25 +03:00
Tianyu Geng 18f7a760bb FIR checker: report unresolved reference in imports
Compared to FE1.0, instead of using UNRESOLVED_REFERENCE, a new
UNRESOLVED_IMPORT diagnostic is introduced. This is so that we can use a
different positioning strategy to highlight the last part of the import
if the entire import is passed.

Also, this change fixed some incorrectly rejected imports in FIR. Such
cases are covered the newly added test file staticFunAndPropertyImport.kt
2021-12-01 23:45:18 +03:00
pyos a1be855d17 FIR: thread control flow through anonymous object init blocks
^KT-39646 Fixed
2021-11-26 14:21:29 +03:00