Commit Graph

25229 Commits

Author SHA1 Message Date
victor.petukhov 60c4eb68ff Add condition for checkNonParenthesizedAnnotationsOnFunctionalType call to except error reporting in stub mode 2019-07-18 17:34:51 +03:00
Igor Chevdar 4bad92d28c Fixed bug in LateinitLowering 2019-07-18 17:08:11 +03:00
Nikolay Krasko c14f842aa0 Fix dependency between idea core environment and jdom 2019-07-17 23:50:32 +03:00
Nikolay Krasko 9e002b3ff8 Fix inability to instantiate UsefulTestCase because of JdomSerializer
Stack Trace
	  at kotlin.collections.CollectionsKt___CollectionsKt.first(_Collections.kt:184)
	  at com.intellij.configurationStore.XmlSerializer.<clinit>(xmlSerializer.kt:15)
	  at com.intellij.codeInsight.CodeInsightSettings.writeExternal(CodeInsightSettings.java:228)
	  at com.intellij.testFramework.UsefulTestCase.<clinit>(UsefulTestCase.java:104)
	  at com.intellij.testFramework.TestLoggerFactory.log(TestLoggerFactory.java:154)
	  at com.intellij.testFramework.TestLogger.info(TestLogger.java:70)
	  at org.jetbrains.kotlin.scripting.compiler.plugin.definitions.CliScriptDependenciesProvider.calculateRefinedConfiguration(CliScriptDependenciesProvider.kt:45)
	  ...
2019-07-17 23:50:32 +03:00
Alexander Udalov 5341de253f JVM IR: run FileClass & ExpectDeclarationsRemoving phases on whole module
Since we now generate file classes even for IR loaded from dependencies
(see 3a9b94235f) to simplify code in certain lowerings, it makes sense
to do that for all source files together before any meaningful
lowerings. The easiest way to do so is to make FileClassLowering a
module-wide phase.

ExpectDeclarationsRemoveLowering is now also a module-wide phase because
it needs to be run before FileClassLowering (to avoid producing empty
facades for files that only contain `expect` declarations)
2019-07-17 18:15:02 +02:00
Alexander Udalov e867830eab JVM IR: inline JvmBackend, JvmCodegen 2019-07-17 18:15:02 +02:00
Alexander Udalov 9d639bc9a4 Minor, remove code duplication in WrappedDescriptors 2019-07-17 18:15:01 +02:00
Georgy Bronnikov 0423d0f41e JVM_IR: specify facadeClassGenerator properly in Psi2IrTranslator 2019-07-17 18:15:01 +02:00
victor.petukhov 7ee5583c89 Fix error message for non-parenthesized annotations on functional types 2019-07-17 17:02:46 +03:00
victor.petukhov 6a679d86ab Support non-parenthesized annotations on functional types without receiver
^KT-31734 Fixed
2019-07-17 16:18:15 +03:00
Alexander Udalov 9595c815f1 JVM IR: invent names for SAM wrapper classes
Similarly to how it's done for callable references. This is needed for
IrTypeMapper to be able to correctly compute the name of the SAM wrapper
IrClass without resorting to the name of the underlying descriptor
(computed in CodegenAnnotatingVisitor)
2019-07-17 13:55:37 +02:00
Alexander Udalov a15575d546 JVM IR: do not use KotlinTypeMapper in IrTypeMapper.mapType 2019-07-17 13:55:37 +02:00
Alexander Udalov 1e16c0a447 JVM IR: minimize public API of IrTypeMapper 2019-07-17 13:55:37 +02:00
Alexander Udalov 59ce76e9fd JVM IR: do not use misleading names for callable reference classes
The real JVM name is invented in InventNamesForLocalClasses and will be
used by the codegen when generating the actual class
2019-07-17 13:55:36 +02:00
Alexander Udalov 29fa1793d3 JVM IR: add InventNamesForLocalClasses pass 2019-07-17 13:55:36 +02:00
Alexander Udalov 529efff8cb IR: introduce IrAttributeContainer
This is useful to store data that must be kept when the element is
transformed, such as names of local/anonymous classes and
EnclosingMethod values on JVM which are computed before any lowerings.

For now, this is implemented very conservatively: the only field
`attributeOwnerId` which can be used in BackendContext implementation as
a key in the map
2019-07-17 13:55:36 +02:00
Alexander Udalov c27d9c4546 Use TypeSystemCommonBackendContext in KotlinTypeMapper.writeGenericArguments 2019-07-17 13:55:36 +02:00
Alexander Udalov 2585ce0aa7 Introduce TypeSystemCommonBackendContext, use in KotlinTypeMapper.getVarianceForWildcard 2019-07-17 13:55:35 +02:00
Alexander Udalov 0460b2990f Use TypeSystemContext in KotlinTypeMapper.hasNothingInNonContravariantPosition
Thanks to this abstraction, this code will now easily work with
IrType-based TypeSystemContext implementation in the new IR type mapper
2019-07-17 13:55:35 +02:00
Alexander Udalov bd8c09bfb5 JVM IR: move CollectionToArray creation to JvmSymbols
Also simplify it to use IR builder DSL
2019-07-17 13:55:35 +02:00
Alexander Udalov 15e0fd93bd Minor, rename IrBuiltIns.IrTypeMapper -> BuiltInIrTypePair
To avoid name clash with the new IrTypeMapper in JVM backend
2019-07-17 13:55:35 +02:00
Alexander Udalov f9a1e582b2 Minor, somewhat simplify ClassCodegen construction 2019-07-17 13:55:35 +02:00
Alexander Udalov edaff968ad Minor optimization in MutableList.transformFlat 2019-07-17 13:55:35 +02:00
Dmitry Petrov 28215186ca IR serialization: migrate to new generated Java classes structure 2019-07-17 12:00:34 +03:00
Dmitry Petrov 8baa7dfe22 Generated Java classes for Kotlin IR protobuf 2019-07-17 12:00:34 +03:00
Dmitry Petrov 2305bea2b5 Generate IR protobuf classes as multiple Java files
Otherwise KotlinIr.java becomes too big for IDEA to swallow in the
default configuration.
2019-07-17 12:00:34 +03:00
Mikhail Glukhikh 7ccf21c5c8 FIR resolve: fix vararg parameter types 2019-07-17 10:45:07 +03:00
Mikhail Glukhikh 592cf4f4e8 Make FirNamedReferenceWithCandidate not resolved, fix receiver completion
Counting it as resolved provokes a lot of difficult to discover errors
2019-07-17 10:45:06 +03:00
Mikhail Glukhikh 08f44d4f14 FIR resolve: add early protection against cyclic property resolve 2019-07-17 10:45:06 +03:00
Simon Ogorodnik 1222449dc8 FIR resolve: perform inference completion for property access 2019-07-17 10:45:06 +03:00
Mikhail Glukhikh 99680a2ad7 FIR: refactor & simplify invoke resolve a bit 2019-07-17 10:45:06 +03:00
Mikhail Glukhikh fff954ed3f FIR: skip extra non-valid groups during candidate resolve 2019-07-17 10:45:06 +03:00
Mikhail Glukhikh b813f22cfe Extract part of utility FIR transformers into TransformUtils 2019-07-17 10:45:05 +03:00
Mikhail Glukhikh 0ac23eef93 Minor (FIR resolve): replace session with fileSession 2019-07-17 10:45:05 +03:00
Simon Ogorodnik 3da11cc85b Use no-op substitutor instead of substitutor with empty map 2019-07-17 10:45:05 +03:00
Mikhail Glukhikh 2d74dac4f2 FIR: set constructor parameter scope correctly for designated transformer 2019-07-17 10:45:05 +03:00
Mikhail Glukhikh b8c3947827 Measure unresolved function call & qualified access # in FIR bench 2019-07-17 10:45:05 +03:00
Roman Artemev af45e1c5dc [JS BE] Do not produce source mapping for fake KtElement
Fix [KT-26701], [KT-12935]
2019-07-17 10:21:34 +03:00
Alexander Udalov f38e4d618e Support Array::class literal, forbid Array<X>::class on non-JVM
#KT-31230 Fixed
2019-07-16 15:57:26 +02:00
Mikhael Bogdanov 496765f41e Support target templates in bytecode tests
Avoid test data duplication
2019-07-16 14:08:27 +02:00
Mark Punzalan de1e27c584 Make all progression headers inclusive, and decrement last for
last-exclusive progressions (i.e., "until" progressions and loop over
array indices).

This change makes it possible to correctly implement the handling of
"step" progressions. Computing the last element of a stepped progression
requires that the last is inclusive.

Also invert the while loop (into if + do-while) that is used when
lowering for-loops over progressions that cannot overflow. This keeps
the performance characteristics closer to the ForLoopsLowering in
kotlin-native, since the goal is to converge to this shared version.

Also used IrType instead of KotlinType, where possible.

 https://github.com/JetBrains/kotlin/pull/2390
 https://github.com/JetBrains/kotlin/pull/2305
2019-07-16 14:08:21 +02:00
Ilya Chernikov cfab89385f Do not override path calculation in light virtual files in tests:
seems unnecessary anymore and breaks some script testing logic
2019-07-16 12:20:21 +02:00
Jake Wharton 4386518c4d Add intrinsic for ULong/UInt.toString on Java 8+
Unfortunately this cannot currently be done for the extension overload which accepts a radix due to behavior difference with regard to invalid radix values.
2019-07-16 11:15:19 +02:00
Alexander Udalov 385366384c Psi2ir: ignore unresolved annotations
Note that the test is an exact copy of an existing test
missingDependencyNestedAnnotation, but with -Xuse-ir
2019-07-15 18:40:00 +02:00
Dmitry Petrov 6963424dfc psi2ir: Empty 'if' branches have type 'kotlin.Unit' 2019-07-15 08:58:04 +03:00
Mikhael Bogdanov 0774f800a0 Split android box tests by flavours 2019-07-15 07:31:35 +02:00
Igor Yakovlev cd6abcd4c9 Expect modifier definitions is not exposed by UL-classes 2019-07-12 16:33:52 +03:00
Igor Yakovlev 0602a6da72 Fix invalid FakeJvmFieldConstant inspection for UL classes
Test MultiFileInspectionTestGenerated.testFakeJvmFieldConstant_FakeJvmFieldConstant now correctly works with ultra-light annotation classes.
2019-07-12 16:33:52 +03:00
Igor Yakovlev a9aa60491e Fix UL-classes test renders and test data 2019-07-12 16:33:51 +03:00
Igor Yakovlev 4b1226e3d7 Set correct nullability and Companion support to annotations 2019-07-12 16:33:51 +03:00