Commit Graph
100 Commits
Author SHA1 Message Date
Kirill Rakhman 2d7cadc0ab [FE, Java Resolve] Filter out canonical record constructors
This fixes a false positive overload resolution ambiguity in FIR
when invoking a record constructor when it also defines a canonical
constructor (compact or explicit).

#KT-62151 Fixed
2023-11-02 12:39:45 +00:00
Kirill Rakhman 0682a1f76d [FIR] Remove line breaks after context receivers in diagnostic messages
#KT-62944 Fixed
2023-11-02 08:58:28 +00:00
Kirill Rakhman ac203591e5 [FE, Java resolve] Support inheritors of sealed Java type without permits clause
This fixes a false negative NO_ELSE_IN_WHEN in K2 and incidentally
also fixes a false positive NO_ELSE_IN_WHEN in K1 since the fix is in
the common code.

#KT-62491 Fixed
2023-10-31 13:41:56 +00:00
Kirill Rakhman 87563f3aea [FIR] Rename diagnostic renderers that insert quotes and fix some messages
#KT-62386
2023-10-27 13:27:35 +00:00
Kirill Rakhman 2613a337ae [FIR] Improve symbol rendering in *_NOT_IMPLEMENTED diagnostics 2023-10-27 13:27:35 +00:00
Kirill Rakhman 44a4498ee5 [FIR] Report ABSTRACT_MEMBER_NOT_IMPLEMENTED_BY_ENUM_ENTRY on enum entries with initializer
#KT-59577 Fixed
2023-10-27 13:27:35 +00:00
Kirill Rakhman ef78d4b95a [FIR] Fix deserialization of generic context receivers
We need to pass the local deserialization context so that generic
type parameters can be referenced.

#KT-62607 Fixed
2023-10-27 11:35:22 +00:00
Kirill Rakhman 8821f8d1a4 [FIR] Expand type alias when checking for type parameters from outer declaration
This fixes a false positive OUTER_CLASS_ARGUMENTS_REQUIRED when
referring to an inner class of a supertype that is extended using a
typealias.

#KT-62099 Fixed
2023-10-27 08:05:58 +00:00
Kirill Rakhman 907ebb36d0 [FIR] Filter out SAM constructors from MemberScopeTowerLevel
This tower level is for calls on a dispatch receiver, and it's not
allowed to call SAM constructors on a dispatch receiver.

#KT-60983 Fixed
2023-10-27 08:03:00 +00:00
Kirill Rakhman 56f53fbd0b [FIR] Make ClassId not null in enum call mapped from java 2023-10-24 13:27:02 +00:00
Kirill Rakhman 65ff684589 [FIR] Don't discriminate generics in conflict resolution for callable references
#KT-59430 Fixed
2023-10-24 07:27:07 +00:00
Kirill Rakhman a652c93828 [FIR] Remove useless call to FirWhenSubjectExpression.replaceConeTypeOrNull
This operation is a no-op.

#KT-61316
2023-10-06 21:26:42 +00:00
Kirill Rakhman fbf68a5bcc [FIR] Narrow down range of NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER
This uses the same approach as
INFERRED_TYPE_VARIABLE_INTO_EMPTY_INTERSECTION where we use a visitor
to find a call to a symbol that contains the type variable in question.

#KT-56140 Fixed
2023-09-22 13:49:59 +00:00
Kirill Rakhman ff812197a8 [Test] Update test data after changes to FIR rendering 2023-09-21 14:02:21 +00:00
Kirill Rakhman 4e1dfcd2a8 [FIR] Improve readability of rendered types in diagnostics
#KT-61824 Fixed
#KT-61688 Fixed
2023-09-21 07:18:19 +00:00
Kirill Rakhman 99b852adf8 [FIR] Refactor constructors of ConeTypeRenders 2023-09-21 07:18:19 +00:00
Kirill Rakhman da0308806a [FIR] Rename ConeTypeRendererWithJavaFlexibleTypes to ConeTypeRendererForReadability 2023-09-21 07:18:19 +00:00
Kirill Rakhman e996760e7e [FIR] Fix rendering of SUSPENSION_POINT_INSIDE_CRITICAL_SECTION
#KT-61826 Fixed
2023-09-21 07:18:19 +00:00
Kirill Rakhman ed4386a962 [FIR] Fix rendering of NO_ACTUAL_CLASS_MEMBER_FOR_EXPECTED_CLASS 2023-09-21 07:18:19 +00:00
Kirill Rakhman 5c38289d60 [.idea] Add scope for testData and set file color to blue for it 2023-09-21 07:11:21 +00:00
Kirill Rakhman 5b4409e34c [FIR] Store abbreviated type in deserialized declarations as attribute
#KT-58542 Fixed
2023-09-20 09:31:29 +00:00
Kirill Rakhman 2e4d486131 [FIR] Use enhanced scope to guess array type in annotation loading
Otherwise, we return null for any java annotation because the
unenhanced scope doesn't contain any properties.

#KT-61856 Fixed
2023-09-20 08:02:37 +00:00
Kirill Rakhman dda6d20520 [FIR] Add test for WRONG_MULTIPLE_INHERITANCE with typealias
#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 6a2b6e03d4 [FIR] Fix false negative ILLEGAL_JAVA_LANG_RECORD_SUPERTYPE
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 0d279dd652 [FIR] Fix false negative JVM_STATIC_ON_CONST_OR_JVM_FIELD
... in presence of typealias.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 7a65c36bfc [FIR] Add test for CLASS_CANNOT_BE_EXTENDED_DIRECTLY with typealias
#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 2d4646a285 [FIR] Fix false negative sealed diagnostics
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 36c0c2c76b [FIR] Fix false negative TYPE_PARAMETER_AS_REIFIED_ARRAY
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman f5f77d43bf [FIR] Fix false negative NO_REFLECTION_IN_CLASS_PATH
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 5d7e6f2aab [FIR] Use fullyExpandedClassId in FirTypeAliasExpandsToArrayOfNothingsChecker 2023-09-18 12:13:02 +00:00
Kirill Rakhman 98e6c0278a [FIR] Fix false negative REPEATED_BOUND
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 9949de36c9 [FIR] Fix false negative ARRAY_EQUALITY_OPERATOR_CAN_BE_REPLACED_WITH_EQUALS
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:02 +00:00
Kirill Rakhman 9475bc250c [FIR] Fix false negative REDUNDANT_CALL_OF_CONVERSION_METHOD
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:01 +00:00
Kirill Rakhman e788c7166a [FIR] Fix false negative REDUNDANT_SINGLE_EXPRESSION_STRING_TEMPLATE
... in presence of typealiases.

#KT-61921
2023-09-18 12:13:01 +00:00
Kirill Rakhman 373ffbc779 [FIR] Fix false positive CONST_VAL_WITH_NON_CONST_INITIALIZER
... in presence of typealiases.

#KT-61499 Fixed
2023-09-18 12:13:01 +00:00
Kirill Rakhman b72ac4f560 [FIR] Introduce helper method ConeKotlinType.fullyExpandedClassId 2023-09-18 12:13:01 +00:00
Kirill Rakhman 0d628c9e59 [FIR] Inline FirExpression.coneTypeSafe und use resolvedType
The call-sites don't actually need to handle unresolved expressions,
they only need safe-casts to ConeClassLikeType or
ConeIntegerLiteralType.

#KT-61367
2023-09-14 10:03:03 +00:00
Kirill Rakhman a4fff7c7c0 [FIR] Inline FirExpression.coneTypeUnsafe
#KT-61367
2023-09-14 10:03:03 +00:00
Kirill Rakhman 126f2c9440 [FIR] Skip published visibility computation for local functions
This fixes an exception caused by annotations being unresolved during
 status computation.

#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman f0112040fc [FIR AA] Unmute passing test 2023-09-14 10:03:02 +00:00
Kirill Rakhman aebb3bf0ee [FIR AA] Use resolvedType instead of coneTypeOrNull where applicable
#KT-61367 Fixed
2023-09-14 10:03:02 +00:00
Kirill Rakhman 6d8091f0ff [FIR] Add workaround for unresolved array literal type #KT-61843
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 462687ed66 [FIR] Don't resolve call in annotation arguments phase if receiver type isn't resolved
This prevents exceptions from being thrown during resolution of red code
because FirExpression.resolvedType is called but during annotation
arguments phase we don't have return types for implicitly typed
declarations.

#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 66b911c923 [FIR] Migrate compiler.fir to use resolvedType where applicable
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 1c6776b2b4 [FIR] Introduce extension FirExpression.isResolved that requires no opt-in
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman e0b5fa1de8 [FIR] Add opt-in for FirExpression.coneTypeOrNull in scripting
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman b9b99366e7 [FIR] Use resolvedType instead of coneTypeOrNull in java.deserialization
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman b1565d547c [FIR] Use resolvedType instead of coneTypeOrNull in FIR2IR
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman c3abe28049 [FIR] Use resolvedType instead of coneTypeOrNull in checkers
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman e8731f3f31 [FIR] Use resolvedType instead of coneTypeOrNull in tests
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 5d6affc38d [FIR] Update FIR utilities
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman a49fdeb05b [FIR] Update manual implementations of FirExpression
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 68bc2be4c9 [FIR] Regenerate FIR types
#KT-61367
2023-09-14 10:03:02 +00:00
Kirill Rakhman 6ec419edb7 [FIR] Update FIR schema to add opt-in to FirExpression.coneTypeOrNull
#KT-61367
2023-09-14 10:03:01 +00:00
Kirill Rakhman ce65d3c7b8 [FIR] Set source on callee reference of implicit invoke receiver
This fixes an IllegalArgumentException when a diagnostic was reported on
it because no source was set.

#KT-61829 Fixed
2023-09-13 12:20:57 +00:00
Kirill Rakhman d9da3973bb [FIR] Remove redundant overloads of allowsToHaveFakeOverride 2023-09-12 10:46:46 +00:00
Kirill Rakhman 2bc25d4f6e [FIR] Properly check for visibility in FirTypeIntersectionScopeContext
This fixes a false positive OVERRIDING_FINAL_MEMBER caused by a
package-private member in a different package being added to the
list of overridden symbols. However, in Java, package-private members
from different packages are effectively like private members in that
they cannot be overridden.

#KT-61696 Fixed
2023-09-12 10:46:46 +00:00
Kirill Rakhman 2566dabfce [FIR] Report INVISIBLE_REFERENCE on the first unresolved qualifier
#KT-61719 Fixed
2023-09-11 14:23:55 +00:00
Kirill Rakhman 16ae83bde0 [FIR] Fix Java sealed class inheritors
This fixes NO_ELSE_IN_WHEN diagnostics when using java sealed
classes in an exhaustive when.

#KT-58216 Fixed
2023-09-11 07:37:37 +00:00
Kirill Rakhman 9a2307ad44 [FIR] Fix expression types in java annotations
#KT-61518 Fixed
2023-09-08 07:40:30 +00:00
Kirill Rakhman b41e5abcfa [FIR] Fix bounds check for inner classes of generic outer classes
#KT-61068 Fixed
#KT-35566
2023-09-06 15:15:07 +00:00
Kirill Rakhman 10e94f90ac [Tests] Trim contents before checking for FIR_IDENTICAL 2023-09-06 11:32:57 +00:00
Kirill Rakhman 585c3fe4b5 [Tests] Add test for #KT-61717 2023-09-06 08:34:04 +00:00
Kirill Rakhman 393a5d6c14 [FIR] Fix IAE in TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM
IllegalArgumentException: class
org.jetbrains.kotlin.psi.KtLambdaArgument is not a subtype of class
org.jetbrains.kotlin.psi.KtExpression for factory
TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM
was reported when TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM was
reported on a FirLambdaArgumentExpression, report it on its
`expression` instead.

#KT-60380 Fixed
2023-09-06 07:38:34 +00:00
Kirill Rakhman f08d4b8bb1 [FIR] Improve condition for sorting equivalent calls by source first
This accommodates for declarations generated by plugins that don't have
a source.
2023-09-05 07:08:28 +00:00
Kirill Rakhman 1c446151e7 [FIR] Skip resolvable package names in front of UNRESOLVED_REFERENCE
#KT-55471
2023-09-04 08:05:08 +00:00
Kirill Rakhman 10f7989af6 [FIR] Report UNRESOLVED_REFERENCE on the first unresolved qualifier
#KT-55471 Fixed
2023-09-04 08:05:07 +00:00
Kirill Rakhman 40fadac060 [FIR] Remove incorrect code generation comment 2023-09-04 08:05:07 +00:00
Kirill Rakhman 0121686a7f [RAW FIR] Use KtFakeSourceElementKind.WrappedDelegate in LT 2023-08-31 10:19:33 +00:00
Kirill Rakhman 21f8ba1706 [FIR] Don't report DEPRECATION on self-access in delegated property
#KT-60682
2023-08-31 10:19:33 +00:00
Kirill Rakhman 411210b520 [RAW FIR] Use range as source of desugared loop-related statements 2023-08-31 10:19:33 +00:00
Kirill Rakhman 61259ef34b [FIR] Report missing DEPRECATION on fake sources
#KT-60682
2023-08-31 10:19:33 +00:00
Kirill Rakhman 4e041494be [FIR] Report DEPRECATION when Java declaration is deprecated in javadoc
#KT-60682
2023-08-31 10:19:33 +00:00
Kirill Rakhman ac102dedac [IR Actualizer] Fix fake-override generation in actual A -> common B -> actual C hierarchy
...  where C defines a member x and A overrides the member x

#KT-61166 Fixed
2023-08-31 07:52:02 +00:00
Kirill Rakhman 293474ee50 [FIR2IR] Remove unused return value of processOverriddenPropertySymbols 2023-08-31 07:52:01 +00:00
Kirill Rakhman a42cb2f37f [FIR] Allow treating candidates from the same non-source module as equivalent
This situation occurs in Native metadata compilation and lead to
false-positive OVERLOAD_RESOLUTION_AMBIGUITY reports.

#KT-61461 Fixed
2023-08-29 09:29:52 +00:00
Kirill Rakhman c30ce4aabe [FIR] Print operator keyword and token to unresolved diagnostic message
#KT-55672 Fixed
2023-08-28 08:12:25 +00:00
Kirill Rakhman 85bb7faf10 [FIR] Report WRONG_NUMBER_OF_TYPE_ARGUMENTS on typealias in super types
#KT-59893 Fixed
2023-08-28 08:02:31 +00:00
Kirill Rakhman bb8a46c3a0 [Test] Parallelize test generation 2023-08-28 08:02:05 +00:00
Kirill Rakhman 844ab4ee74 [FIR] Remove FirExpression.typeRef
#KT-61312 Fixed
2023-08-25 10:16:41 +00:00
Kirill Rakhman 12b3fbd39a [RAW FIR] Refactor destructuring code
Move destructuring related code into common to reduce
differences between PSI and LT.
2023-08-24 11:07:46 +00:00
Kirill Rakhman 8de36c416e [RAW FIR] Put destructuring statements outside of main lambda block
This fixes a false positive REDECLARATION when you want to shadow
a destructured lambda parameter inside the lambda.

#KT-60771 Fixed
2023-08-24 11:07:45 +00:00
Kirill Rakhman 7fde5af7f8 [FIR] Rename FirExpression.coneType to resolvedType 2023-08-24 07:54:57 +00:00
Kirill Rakhman ab6d87a1a2 [FIR] Introduce deprecated FirExpression.typeRef property for compatibility with Compose
#KT-59855
2023-08-24 07:54:57 +00:00
Kirill Rakhman a5cff6ae36 [FIR] Make type of special expressions immutable 2023-08-24 07:54:57 +00:00
Kirill Rakhman 8d7c5b375e [FIR] Replace usages of FirExpression.typeRef with coneTypeOrNull
#KT-59855 Fixed
2023-08-24 07:54:57 +00:00
Kirill Rakhman f60d81097c [FIR] Adapt FIR renderer after FirExpression.coneTypeOrNull introduction
#KT-59855
2023-08-24 07:54:57 +00:00
Kirill Rakhman bc27feace4 [FIR] Adapt FIR utilities after FirExpression.coneTypeOrNull introduction
#KT-59855
2023-08-24 07:54:57 +00:00
Kirill Rakhman 7223cd1bf3 [FIR] Update custom FIR implementations after FirExpression.coneTypeOrNull introduction
#KT-59855
2023-08-24 07:54:57 +00:00
Kirill Rakhman b24afa0177 [FIR] Regenerate FIR tree after FirExpression.coneTypeOrNull introduction
#KT-59855
2023-08-24 07:54:57 +00:00
Kirill Rakhman bec39a9258 [FIR] Change FIR structure by replacing FirExpression.typeRef with cone type
#KT-59855
2023-08-24 07:54:56 +00:00
Kirill Rakhman 270aa1656f [FIR] Add default parameter values to ClassId.constructClassLikeType
#KT-59855
2023-08-24 07:54:56 +00:00
Kirill Rakhman e50025f21f [FIR2IR] Replace FirExpression.typeRef.toIrType with coneType.toIrType
#KT-59855
2023-08-24 07:54:56 +00:00
Kirill Rakhman 9ec814b7ad [FIR] Replace FirExpression.typeRef.coneType (and variants) with FirExpression.coneType
#KT-59855
2023-08-24 07:54:56 +00:00
Kirill Rakhman 1472b21993 [FIR] Don't use called declaration as source for call typeRef
Otherwise, we end up with sources pointing to different files.

#KT-60760 Fixed
2023-08-24 07:54:56 +00:00
Kirill Rakhman e96dcef571 [FIR2IR] Convert annotations on local delegated properties
#KT-60292 Fixed
2023-08-23 11:09:35 +00:00
Kirill Rakhman 27d25b90b1 [Tests] Fix test data 2023-08-22 16:06:24 +00:00
Kirill Rakhman d0cc86f52c [Tests] Update test data after changes to FIR diagnostic messages 2023-08-21 16:28:48 +00:00
Kirill Rakhman de1c92a32f [FIR] Update diagnostic messages 2023-08-21 16:28:48 +00:00
Kirill Rakhman 6cd9b5ec98 [FIR] Add guidelines for diagnostic messages 2023-08-21 16:28:48 +00:00