Jinseong Jeon
797174ee1f
AA: introduce new APIs to get containing file (symbol) and JvmClassName
...
^KTIJ-27686
2023-12-21 15:34:34 +00:00
Jinseong Jeon
4c7e9f3cbf
AA standalone: more tests about resolving properties in nested class/object from binary
2023-12-19 07:03:31 +00:00
Jinseong Jeon
d603115def
AA standalone: set binary dependency kind in test configurator
2023-12-19 07:03:30 +00:00
Jinseong Jeon
92d6aeb7a3
LC: lookup backing field of property in decompiled class/companion
...
^KTIJ-27684
2023-12-19 07:03:30 +00:00
Jinseong Jeon
e5095a60ba
K2 UAST: lookup properties in the containing class, not companion object
...
...because properties in the companion object are materialized
in the containing class.
^KTIJ-27684 fixed
2023-12-19 07:03:29 +00:00
Jinseong Jeon
10c9b81c79
AA standalone: introduce multi-module binary dependency test
2023-12-19 07:03:29 +00:00
Jinseong Jeon
3c775c4a42
Fix dependency kind explanations
...
They are directly used for enum valueOf, and the enum constants are not
all capitals. Instead, only the first letter is capital.
2023-12-19 07:03:28 +00:00
Jinseong Jeon
3fbc16af62
AA standalone: repackage test configurators
...
...before introducing a new test configurator for binary dependency
2023-12-19 07:03:28 +00:00
Jinseong Jeon
0832158017
AA standalone: rename previous test to include SingleModule
...
...before introducing multi-module / binary dependency tests
2023-12-19 07:03:28 +00:00
Jinseong Jeon
1f0540faa1
AA: place FIR test configurator in the same package
...
...for better consistency and easier discovery.
2023-12-19 07:03:27 +00:00
Jinseong Jeon
4110a9971a
AA: fix KtTypeProvider#getReceiverTypeForDoubleColonExpression
...
K1 version has used a wrong expression to retrieve the slice.
K2 version mishandled property access as a receiver.
^KT-63195 fixed
2023-11-08 16:18:21 +00:00
Jinseong Jeon
1ccb085e68
SLC: use fully expanded type when computing nullability
...
^KT-62757 fixed
2023-10-25 14:59:50 +00:00
Jinseong Jeon
cec299ac0a
K2 UAST: Improve performance of PSI declaration provider
...
When it comes to finding regular class (of `PsiClass`) from the given
`ClassId`, we've reinvented the wheel in a worse way. `JavaFileManager`
is there to find `PsiClass`, and we already build/populate index for
that while initializing AA standalone mode's own project environment.
We can simply load that manager and send a query, that's it.
However, our efforts so far on binary PSI declaration providers are not
entirely useless. `JavaFileManager` can't handle top-level declarations
and search for all callables/classes in a given package in general. So,
we can still use existing logic for non-ClassId queries. We just need to
cache the intermediate results: fq name to `VirtualFile`s.
To fully utilize the aforementioned cache, we also need to cache an
instance of `KotlinPsiDeclarationProvider`.
Combing these three ideas, now running K2 UAST on a very large module is
"on par", e.g.,
K1:
//tools/adt/idea/android:intellij.android.core_lint_test PASSED in 112.8s
Stats over 7 runs: max = 112.8s, min = 104.3s, avg = 107.9s, dev = 3.6s
K2 (before):
//tools/adt/idea/android:intellij.android.core_lint_test PASSED in 303.0s
Stats over 7 runs: max = 303.0s, min = 286.8s, avg = 294.4s, dev = 5.0s
K2 (after):
//tools/adt/idea/android:intellij.android.core_lint_test PASSED in 112.8s
Stats over 7 runs: max = 112.8s, min = 105.7s, avg = 108.9s, dev = 2.4s
2023-09-18 14:55:11 +00:00
Jinseong Jeon
421cd9929b
SLC: use optimal type mapping mode for receiver parameter
...
...and other kinds of parameters as well
2023-09-05 10:33:54 +00:00
Jinseong Jeon
4cdc22c9cc
AA FIR: use fully expanded type when computing optimal type mapping mode
...
^KT-61460 Fixed
2023-09-05 10:33:53 +00:00
Jinseong Jeon
72de540fc9
AA: try finding a module for an associated analysisContext from KtPsiFactory if any
2023-07-24 11:34:51 +02:00
Jinseong Jeon
2dee644f7a
AA FE1.0: restore an option to register AnalysisHandlerExtension w/o use-site module
2023-07-24 11:34:51 +02:00
Jinseong Jeon
5596c3ae80
AA: better error message for file w/o containing module
...
...instead of throwing NoSuchElementException
2023-07-13 11:51:23 +02:00
Jinseong Jeon
6fc02c3408
SLC: ROOT package exists no matter what
...
^KT-59843 Fixed
2023-07-11 11:47:23 +02:00
Jinseong Jeon
f467c970b2
Drop param name check in PSI-KtSymbol eq checker
...
Parameter names might not be available, e.g., header jar (ijar).
2023-06-29 14:44:41 +00:00
Jinseong Jeon
0d19a5b3ea
AA: make paths platform-independent before using JRT file system
...
^KT-59697 Fixed
2023-06-28 22:13:16 +02:00
Jinseong Jeon
a93bc60655
AA: use simple name of local type as JVM internal name
...
Otherwise, e.g., if a local type is within an anonymous object, full
class id will include that anonymous object too, resulting in invalid
type signature for PsiType.
^KT-59533 Fixed
2023-06-28 18:38:01 +02:00
Jinseong Jeon
e0fc0d96e5
AA: handle PsiType conversion for recursive type parameter case
...
^KT-59598 Fixed
2023-06-23 16:31:47 +02:00
Jinseong Jeon
2d132c6b73
SLC: run enum test w/ FULL_JDK
2023-06-23 16:19:06 +02:00
Jinseong Jeon
7f1424737e
LC: rework modality of enum class
...
It is abstract if it has abstract member.
It is final if it doesn't have enum entries that need subclass.
Otherwise, it is open (i.e., no modifier)
^KT-57567 Fixed
2023-06-23 16:19:06 +02:00
Jinseong Jeon
5d7ac18778
SLC: drop the assertion that class context shouldn't be null
...
...because it can be null if an anonymous object is returned as a value
of reified inline function, which isn't materialized as LC element.
^KT-59537 Fixed
2023-06-23 10:33:58 +00:00
Jinseong Jeon
799aadfacf
AA: add an option to create Application env for production v.s. test mode
...
...and use production mode by default for AA standalone
^KT-59511 Fixed
2023-06-22 11:32:29 +02:00
Jinseong Jeon
b91a23be12
Reintroduce KtLightClassForScript as a common interface between (U|S)LC
...
...so that UAST's conversion to KotlinScriptUClass can work for both LCs
2023-06-21 11:14:15 +02:00
Jinseong Jeon
618d6526a7
Rename KtLightClassForScript to reuse it for common interface between LCs
2023-06-21 11:14:15 +02:00
Jinseong Jeon
37876313c9
SLC: add nullity annotation when force-boxing return type
...
^KT-57579 Fixed
2023-06-20 15:43:41 +00:00
Jinseong Jeon
3f22044275
AA: collect .kts source files too
2023-06-01 14:16:31 +02:00
Jinseong Jeon
b42d2e56a4
AA: use nameFilter of KtFileScope#get*Symbols
2023-05-15 19:25:05 +02:00
Jinseong Jeon
41473a948d
SLC: implement PsiAnnotation#find(Declared)AttributeValue
...
^KT-58448 Fixed
2023-05-15 14:16:14 +02:00
Jinseong Jeon
384ed9cc9e
AA: regression test for default value that calls previous params
2023-05-04 18:26:32 +02:00
Jinseong Jeon
501ec4fdbf
AA: fix typo in KtLibrarySourceModule description
2023-05-01 16:26:54 +02:00
Jinseong Jeon
5282e60328
AA standalone: register LL FIR session configurator extension
...
Also, introduce an API to register user's own project extension points
2023-04-26 01:01:53 +00:00
Jinseong Jeon
5298abf2d6
AA/LC: introduce an API to find script files
2023-04-25 14:49:03 +02:00
Jinseong Jeon
f9086daf4d
SLC: add support for .kts
...
^KTIJ-21108
^KT-50241
^KT-55626 Fixed
2023-04-25 14:49:03 +02:00
Jinseong Jeon
8544081c46
SLC: enable enum test case
2023-04-24 11:42:06 +00:00
Jinseong Jeon
0ca86c86be
SLC: add nullability annotation to value param of non-synthetic enum members
...
^KT-57567
2023-04-19 16:14:23 +02:00
Jinseong Jeon
9fe30bfc12
SLC: regression test for final modifier on enum members
...
^KT-57567
2023-04-19 16:14:23 +02:00
Jinseong Jeon
fbe558a0de
AA FIR: handle smartcasted arg when building call's argument mapping
...
^KTIJ-25112 Fixed
2023-04-17 13:57:08 +02:00
Jinseong Jeon
ed4cc99db3
FIR: use symbol modality to ensure the retrieval of lazily resolved status
...
^KT-57578
2023-04-17 10:59:04 +02:00
Jinseong Jeon
5403cc7feb
SLC: fix type mapping mode for var
...
^KT-57578
2023-04-17 10:59:03 +02:00
Jinseong Jeon
95491f223c
FIR: fix subtle isFinal counterpart in ConeTypeContext
...
^KT-57578 Fixed
2023-04-17 10:59:03 +02:00
Jinseong Jeon
98074c4849
SLC: merge field's static modifier setting
2023-03-31 12:21:17 +00:00
Jinseong Jeon
107b0229ef
SLC: use partition to distinguish ctor properties from regular member properties
2023-03-31 12:21:16 +00:00
Jinseong Jeon
3c982cfaa3
SLC: mangle internal setter name
2023-03-31 12:21:16 +00:00
Jinseong Jeon
91925b947d
SLC: fix visibility of lateinit var
...
^KT-57569 Fixed
2023-03-31 12:21:15 +00:00
Jinseong Jeon
d8902816d0
SLC: fix non-last vararg parameter type
...
^KT-57547 Fixed
2023-03-30 12:07:01 +00:00
Jinseong Jeon
0ac3fae9ab
LC: commonize facade for multi-file class
2023-03-29 18:51:03 +02:00
Jinseong Jeon
3b09313192
SLC: fix inheritance list for subtype of Comparator
...
^KT-57548 Fixed
2023-03-29 11:27:34 +02:00
Jinseong Jeon
1b3b554084
SLC: force boxed return type when needed
...
e.g., when overriding a function whose return type is not primitive
^KT-57579 Fixed
2023-03-29 11:27:34 +02:00
Jinseong Jeon
5455942859
AA: handle underscore as type arguments
...
^KTIJ-24742 Fixed
2023-02-23 13:02:34 +01:00
Jinseong Jeon
527fc68778
ULC: match value parameter name of enum's valueOf
2023-02-20 14:07:01 +01:00
Jinseong Jeon
88b07f5287
SLC: keep annotations on type when converting to PsiType
...
^KT-55815 Fixed
2023-02-09 19:53:45 +01:00
Jinseong Jeon
4a872928dd
AA standalone: use IJ platform in headless mode
2023-02-03 07:56:37 +01:00
Jinseong Jeon
fc2da32eb6
[references] introduce a dummy reference resolve helper
...
...because the implementation of reference resolution helper in IDE is
not always available (e.g., Android Lint CLI).
2023-01-24 17:54:00 +01:00
Jinseong Jeon
2da4693cc0
AA: do not use full decompilation for built-ins
...
This is the major performance bottleneck for AA/UAST artifacts rollout
to Android Lint. KT stubs are good/fast enough.
2023-01-17 16:51:34 +01:00
Jinseong Jeon
669afdd463
AA: place KotlinStaticDeclarationIndex in its own file with less visibility
2023-01-17 16:51:34 +01:00
Jinseong Jeon
b088e742ae
Introduce a util to copy TypeMappingMode for UAST
2023-01-17 13:56:42 +01:00
Jinseong Jeon
e89a387cd4
Optimal type mapping modes for UAST
...
As shown in (DEFALUT | GENERIC_ARGUMENT)_UAST, UAST's PsiType mapping
needs an automatic expansion of type alias. This commit makes utils that
generate optimal type mapping modes for return / parameter to consider
if this is used for UAST. In that case, utils will set `mapTypeAliases`
true so that typealias (even inside type arguments) can be expanded
properly.
2023-01-17 13:56:41 +01: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
Jinseong Jeon
4beb55179b
AA: expected type for expression passed to vararg
2022-12-21 17:05:00 +09:00
Jinseong Jeon
5f986fd467
ULC: fix PsiMethod#getThrowsList for accessors
...
^KTIJ-17761
2022-12-11 15:22:12 +00:00
Jinseong Jeon
cc7083d59e
SLC: implement PsiMethod#getThrowsList
2022-12-11 15:22:11 +00:00
Jinseong Jeon
8eccb552a3
Migrate descriptor-related util from IR to FE1.0
...
so that FE1.0 UAST can avoid depending on backend IR
^KTIJ-23602
2022-11-29 21:52:55 +00:00
Jinseong Jeon
c79d65536b
Gracefully handle erroneous super type during local type approximation
...
^KTIJ-23528 Fixed
2022-11-22 20:16:40 +01:00
Jinseong Jeon
f2bc25c71d
SLC: fix visibility/static modifer of property in companion
2022-11-21 15:55:13 +01:00
Jinseong Jeon
e2901c81ac
SLC: populate fields from companion in annotation
2022-11-21 15:55:12 +01:00
Jinseong Jeon
6caf384bad
AA FIR: handle Java annotation vararg values
2022-11-17 12:58:14 +01:00
Jinseong Jeon
fcba1f215a
AA: handle erroneous type in nested type argument
2022-11-16 14:13:43 +01:00
Jinseong Jeon
2131cb4fe0
AA FIR: functional type for anonymous function
...
^KTIJ-17657 In progress
2022-11-11 10:15:44 +01:00
Jinseong Jeon
b2e239a542
AA: tests about equals on sealed/data class
...
^KT-54844 In Progress
2022-11-09 07:12:36 +01:00
Jinseong Jeon
4497be0b68
AA: do not parse signature with NO_NAME_PROVIDED
...
^KTIJ-23503 Fixed
2022-11-04 10:42:19 +01:00
Jinseong Jeon
7f6cad6fb3
FIR: ensure STATUS resolve phase before reading valueClassRepresentation
2022-11-02 18:04:38 +01:00
Jinseong Jeon
542ca68aba
AA: add test about PsiType for @JvmInline value class
2022-11-02 18:04:38 +01:00
Jinseong Jeon
c9a2e10dd7
AA: merge single/multi modules tests for PsiTypeProvider
...
...because single-module test is also multi-module test
2022-11-02 17:38:16 +01:00
Jinseong Jeon
d98081dce2
AA: introduce MPP tests for PsiTypeProvider
2022-11-02 17:38:16 +01:00
Jinseong Jeon
dc7506c40a
AA: utilize logic in PsiTypeProvider test
...
...to reuse them in upcoming multi-module tests
2022-11-02 17:38:15 +01:00
Jinseong Jeon
5bca3c6841
AA: rename test api for better clarification
...
Many sub tests are implementing the same name, doTestByFileStructure,
which indeed are based on the list of KtFile in a single module.
Rather, this one should be named after "ModuleStructure".
2022-11-02 17:38:15 +01:00
Jinseong Jeon
8d8d0d9922
SLC: add marker interface for collection inheritor
2022-10-27 14:41:24 +02:00
Jinseong Jeon
8016225519
ULC: make file/class names match
2022-10-27 10:36:40 +02:00
Jinseong Jeon
14213ddad2
AA: fix expected type for lambda with explicit label
2022-10-24 22:07:05 +02:00
Jinseong Jeon
dbf0ba442a
(U|S)LC: fix getText for modifier list / accessor
2022-10-19 14:17:36 +02:00
Jinseong Jeon
e1344968ec
(S|U)LC: fix getTextOffset and getTextRange for modifier list of accessors
...
in a similar way 36e1149e did for property accessors
2022-10-19 14:17:36 +02:00
Jinseong Jeon
19151fa866
SLC: fix getTextOffsets and getTextRange for accessors
...
Same idea from LC fix at 36e1149e
2022-10-19 14:17:36 +02:00
Jinseong Jeon
ae437716d6
SLC: remove unnecessary overridden kotlinOrigin for accessor
...
Same as the declaration in the base class SymbolLightMemberBase
2022-10-19 14:17:36 +02:00
Jinseong Jeon
fc1eb02590
SLC: implement PsiVariable#computeConstantValue for light field
2022-10-02 13:41:12 +02:00
Jinseong Jeon
a58e0803fb
ULC: output update (annotation on enum entry)
...
Input has `// CHECK_BY_JAVA_FILE`
and thus ULC output as .java file should be updated too
when input was changed to add annotation on enum entry
(at commit c5916e1d )
Tested by UltraLightClassLoadingTestGenerated in IntelliJ
2022-10-02 13:41:12 +02:00
Jinseong Jeon
2fdedf8251
AA FIR: unwrap fake override constructor
2022-10-02 13:39:49 +02:00
Jinseong Jeon
dd7fc7f4ae
AA FIR: avoid unsafe argument retrieval during const evaluation
2022-09-18 17:22:02 +02:00
Jinseong Jeon
efb867b46c
AA: do not create symbol pointers for (intersection|substitution) overridden members
2022-09-17 16:43:12 +02:00
Jinseong Jeon
e50da634bc
AA: add tests for resolution to built-ins
2022-09-17 16:43:12 +02:00
Jinseong Jeon
c7347cfb48
LL FIR: module kind for built-ins module
2022-09-17 16:43:11 +02:00
Jinseong Jeon
f9e086a6e3
S/LC: avoid building light classes for decompiled built-ins
2022-09-17 16:43:11 +02:00
Jinseong Jeon
0b63f294ab
LL FIR: remove unnecessary type cast
...
For compiled symbol, it can be either library or built-ins session
2022-09-17 16:43:11 +02:00
Jinseong Jeon
7529965619
LL FIR: cache built-ins module to session
2022-09-17 16:43:11 +02:00
Jinseong Jeon
c2daa26118
AA: use fully decompiled file when indexing built-ins
2022-09-17 16:43:10 +02:00
Jinseong Jeon
5bf333f6f5
AA: look up built-ins module for deserialized declarations from built-ins
2022-09-17 16:43:10 +02:00