Commit Graph

1934 Commits

Author SHA1 Message Date
Kirill Rakhman 5a08d8da8d FIR: don't check annotations on returnTypeRefs that are not of real kind
This fixes an exception in FirAnnotationChecker where we tried to report
repeated annotations on implicit type refs that have no source.
2023-01-13 12:54:18 +00:00
Dmitriy Novozhilov 3744878b6d [FIR Plugin prototype] Use new DSL for generating declarations 2023-01-12 17:45:40 +00:00
Dmitriy Novozhilov faa96ec7c0 [AA LC] Don't create light methods if value class is present in signature
^KT-55788

Test `parameter_jvmInline.kt` is removed because now members with value
  classes are not included in light classes and don't have PSI representation
2023-01-12 17:45:10 +00:00
Dmitriy Novozhilov 16b72d3e54 [AA] Unwrap type aliases in annotation arguments
^KT-55782 Fixed
2023-01-12 17:45:10 +00:00
Dmitriy Novozhilov 34af013913 [AA LC] Add test for modifiers of delegate fields 2023-01-12 17:45:09 +00:00
Dmitriy Novozhilov 95f5848e6c [AA LC] Save unresolved qualifier name in arguments of annotations 2023-01-12 17:45:09 +00:00
Dmitriy Novozhilov ed867af01d [AA LC] Expand aliases of type arguments during conversion to KtType
^KT-55781
2023-01-12 17:45:09 +00:00
Dmitriy Novozhilov 36ae901b19 [AA LC] Map unresolved types according to aliased imports 2023-01-12 17:45:08 +00:00
Dmitriy Novozhilov d5a76a1b3b [AA LC] Keep original qualifier while translating error cone types to Psi types 2023-01-12 17:45:08 +00:00
Dmitriy Novozhilov a3b9f15ecc [AA LC] Create proper Psi types for types with errors inside 2023-01-12 17:45:08 +00:00
Dmitriy Novozhilov 3a536bb32f [AA LC] Approximate anonymous type to single supertype if possible
^KT-55780 Fixed
^KT-55778 Fixed
2023-01-12 17:45:07 +00:00
Dmitriy Novozhilov 935b4f2feb [AA LC] Add workaround for jvmDefaults compatibility 2023-01-12 17:45:07 +00:00
Dmitriy Novozhilov d7cd2b72b0 [AA LC] Add test for strange JVM identifiers 2023-01-12 17:45:07 +00:00
Dmitriy Novozhilov bd26c29229 [FIR] Resolve arguments of error types during type resolution 2023-01-12 17:45:06 +00:00
Nikolay Lunyak 0e1350f464 [FIR] Ensure NO_COMPANION_OBJECT is reported for typealiases
^KT-55733 Fixed
^KT-55186 Fixed
2023-01-12 13:51:11 +00:00
Jinseong Jeon 2dca2b4827 AA FE1.0: Fix StackOverflowError during resolution to a function w/ recursive type parameter
^KT-55825 Fixed
2023-01-12 19:48:21 +09:00
Justin Paupore 0c516f8483 [AA-FE1.0] Flatten spread arguments in annotations.
This requires plumbing a Fe10AnalysisContext through to the
KtFe10AnnotationsList, so that the context's module descriptor and
KotlinBuiltIns instance can be used to look up types correctly.

This eliminates the difference between the FIR and FE1.0 AA
implementations with regards to annotation spread argument handling.
2023-01-12 19:48:21 +09:00
Justin Paupore 212baf580c [AA-FIR] Fix handling of Java annotation parameters.
This changes FirAnnotationValueConverter to no longer rely on PSI
information when projecting annotation parameter information to AA.
For annotations defined in Java, including many meta-annotations, PSI
information is not available for the annotation. This caused those
annotation values to be projected as KtUnsupportedAnnotationValue.

Instead of using PSI information, this changes
FirAnnotationValueConverter to use the tree structure instead. Spread
and named parameter arguments are spliced into the parameter list of
their surrounding vararg calls, meaning that callers see the expected
structure. (See the varargSpreadParameter.kt test file for an example.)
2023-01-12 19:48:21 +09:00
Justin Paupore fbcde11b04 [AA] Add meta-annotation test for analysis API.
This test ensures that annotations on other annotations are properly
handled, even if those annotations are defined in Java rather than in
Kotlin.

Note that this functionality only works on FIR, and currently has bugs
that mean the result is an error type. Follow-on changes will fix the
error-type bug, and restore proper functionality for FIR.
2023-01-12 19:48:21 +09:00
Justin Paupore 686551d1eb [AA] Add support for printing meta-annotations in annotation tests.
This functionality will be used in follow-on commits.
2023-01-12 19:48:21 +09:00
aleksandrina-streltsova 3a6e3290aa [FIR] KTIJ-24156: Add test data 2023-01-10 20:15:28 +00:00
aleksandrina-streltsova af414cfb5e [Analysis API] Provide API for getting KtTypeAliasSymbol by ClassId 2023-01-10 20:15:27 +00:00
pyos c185bf60f8 Add a test for data flow with reassignments in local classes 2023-01-10 15:40:51 +02:00
pyos 5e8591d61d FIR: use expected type for lambda return statements if possible 2023-01-10 15:40:46 +02:00
pyos 544cf386af Add test for KT-54742 2023-01-10 15:40:45 +02:00
Ilya Kirillov 20b81464be [Analysis API] fix IndexOutOfRangeException
Previously, the `KtFirUsualClassType.qualifiers` was empty for the local classes

The reason was a RawFirBuilder setting up a containingClassForLocalAttr
to the outer non-local class for the local class. It should be a null instead,
see the localClassType.kt as an example

^KT-55510 fixed
2023-01-10 12:54:18 +00:00
Ilya Kirillov 61d8b91c89 [Analysis API] add tests for checking KtType internals 2023-01-10 12:54:17 +00:00
Ilya Kirillov 2b94a33937 [Analysis API FE1.0] rename KtFe10Type.type -> KtFe10Type.fe10Type to disambiguatly ignore in testdata renderings 2023-01-10 12:54:17 +00:00
Mikhail Glukhikh 7904f23660 FE: add & fix test with intersection property shadowed by base field 2023-01-09 21:37:22 +00:00
Mikhail Glukhikh 949a39b80f K2: add checker detecting protected Java field shadowed by a property 2023-01-09 21:37:22 +00:00
Mikhail Glukhikh 6234da4c86 K1: add use-site diagnostic about property shadowing by a field
Related to KT-50082
2023-01-09 21:37:21 +00:00
Mikhail Glukhikh 59bafedd8a K2 resolve: prefer derived class property to base class field
#KT-50082 Fixed
2023-01-09 21:37:21 +00:00
Anna Kozlova d7179d929f [LC] add isEquivalentTo implementation so LC can be referenced from java
otherwise references from java to ktElements won't be treated as references,
cause java references resolve to light elements and search can/should be called
on ktElements
2023-01-09 18:43:57 +00:00
Nikolay Lunyak 5817155616 [FIR JS] Implement FirJsNameChecker 2023-01-09 08:57:12 +00:00
Nikolay Lunyak 85bcef537c [FIR JS] Support NON_EXTERNAL_DECLARATION_IN_INAPPROPRIATE_FILE 2023-01-09 08:57:12 +00:00
Nikolay Lunyak 5b3a73f7cd [FIR JS] Implement FirJsNativeAnnotationChecker 2023-01-09 08:57:12 +00:00
Nikolay Lunyak a20e29e8b7 [FIR JS] Implement FirJsExternalChecker
The JsAllowValueClassesInExternals feature is enabled explicitly,
because otherwise it's enabled
implicitly depending on the backend. See:
org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt:90

A property may have a fake source return kind, while its accessor
has a real source kind. In this case we can't "just copy"
the property return type down to the accessor.
2023-01-09 08:57:11 +00:00
Nikolay Lunyak 7b8f5f9980 [FIR JS] Implement FirJsRuntimeAnnotationChecker 2023-01-09 08:57:11 +00:00
Nikolay Lunyak 56285bb2d6 [FIR JS] Report CALL_TO_DEFINED_EXTERNALLY_FROM_NON_EXTERNAL_DECLARATION 2023-01-09 08:57:11 +00:00
Nikolay Lunyak 4cf8d9ffb9 [FIR JS] Implement FirJsInheritanceChecker 2023-01-09 08:57:10 +00:00
Nikolay Lunyak 9e1c6f2f61 [FIR JS] Support DYNAMIC_SUPERTYPE 2023-01-09 08:57:10 +00:00
Nikolay Lunyak 227969d787 [FIR JS] Support DYNAMIC_RECEIVER_NOT_ALLOWED 2023-01-09 08:57:10 +00:00
Nikolay Lunyak 0f876f665a [FIR JS] Support DELEGATION_BY_DYNAMIC 2023-01-09 08:57:09 +00:00
Nikolay Lunyak eed2fada1f [FIR JS] Support WRONG_MULTIPLE_INHERITANCE 2023-01-09 08:57:09 +00:00
Nikolay Lunyak 0426f35684 [FIR JS] Report JS_MODULE-related diagnostics 2023-01-09 08:57:08 +00:00
Nikolay Lunyak f422a3a4e8 [FIR JS] Report WRONG_JS_QUALIFIER for the argument of JsQualifier 2023-01-09 08:57:08 +00:00
Nikolay Lunyak 0e38d0ebd2 [FIR JS] Ensure JS-specific diagnostics are generated properly 2023-01-09 08:57:07 +00:00
Dmitrii Gridin 0e23ffcec9 [LC] add test on Throws annotation 2023-01-06 21:09:44 +00:00
Dmitrii Gridin 5a74fec3ac [AA] KtAnnotated: split hasAnnotation to two extensions 2023-01-06 21:09:43 +00:00
Dmitrii Gridin 2c305b46df [SLC] SymbolLightSimpleMethod: simplify isOverride for top level functions 2023-01-06 21:09:43 +00:00