Commit Graph

92575 Commits

Author SHA1 Message Date
Georgy Bronnikov f94b0bbcea Fir2Ir: add Fir2IrTypeParametersContainer
Fir2IrLazyProperty should not be a IrTypeParametersContainer.
2022-05-19 12:02:42 +02:00
Georgy Bronnikov 4b34648327 Fir2Ir: repair computation of IR signatures 2022-05-19 12:02:42 +02:00
Georgy Bronnikov ffe1615e9c Fir: simplify IrBuiltInsOverFir 2022-05-19 12:02:42 +02:00
Georgy Bronnikov bf5cd14acd Fir2Ir: allow setting Fir2IrLazyConstructor.extensionReceiverParameter
Needed by handleJvmStaticInSingletonObjects after IR deserialization.
2022-05-19 12:02:42 +02:00
Georgy Bronnikov 8771ce94ef Fir2Ir: deal with toplevel privates 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 9ea14a6eab Fir2Ir: pass file data to Fir2IrSignatureComposer 2022-05-19 12:02:41 +02:00
Georgy Bronnikov ae158e4c5b Fir2Ir: make Fir2IrLazyClass a DeserializableClass 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 0012ba79e1 Fir2Ir: rework FirIrProvider 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 4a450a6627 Fir2Ir: handle flexible types in FirJvmMangleComputer
This is preliminary: like Fir2IrTypeConverter, we just take the upper
bound. Need to replicate the approximation performed in TypeTranslator.
2022-05-19 12:02:41 +02:00
Georgy Bronnikov 57679bda79 Fir2Ir: run type enhancement in FirIrProvider 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 829b2822c6 Fir2Ir: adjust FirBasedSignatureComposer for constructors
Consatructor's name in the signature should be '<init>', not the
name of the constructed class.
2022-05-19 12:02:41 +02:00
Georgy Bronnikov af123d1daf Fir2Ir: deserialize bodies of inline functions 2022-05-19 12:02:41 +02:00
Georgy Bronnikov e0c175bb50 Fir2Ir: remove symbolTable as separate component from FirResult
It's already in components.
2022-05-19 12:02:41 +02:00
Georgy Bronnikov 3f66b31a47 Fir2Ir: add irProviders to Fir2IrComponents
Removes the last use of DeclarationStubGenerator in the FIR pipeline.
2022-05-19 12:02:41 +02:00
Georgy Bronnikov 13d4d60afa Fir2Ir: pass Fir2IrExtensions to backend 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 3c3c1be543 Fir2Ir: introduce Fir2IrExtensions
This allows us to remove DeclarationStubGenerator from Fir2IrConverter,
thus reducing dependency on descriptor-based code.
2022-05-19 12:02:41 +02:00
Georgy Bronnikov 6bc01f031c JVM_IR: remove dependency of JvmFileFacadeClass on stub generator 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 3c939a1bdd Fir2Ir: remove unneeded ExternalDependenciesGenerator calls 2022-05-19 12:02:41 +02:00
Georgy Bronnikov c87748209d Fir2Ir: use lazy declarations for imported toplevel functions and properties 2022-05-19 12:02:41 +02:00
Georgy Bronnikov c32d0f3852 Fir2Ir: add FirIrProvider 2022-05-19 12:02:41 +02:00
Georgy Bronnikov 320ba3db75 JVM_IR, FIR: add FIR tests for IR serialization 2022-05-19 12:02:41 +02:00
Dmitriy Novozhilov 89b1307e16 [FE 1.0] Don't report UNUSED_* warnings on local properties with delegate
^KT-25527 Fixed
2022-05-19 07:14:23 +00:00
Dmitriy Novozhilov 4d5a4ccd6b [FE 1.0] Don't fail on calls of functions with contracts from object
^KT-51704 Fixed
2022-05-19 07:14:22 +00:00
Dmitriy Novozhilov 993021a71d [Build] Use 1.8 target version instead of 1.6 while using JPS build 2022-05-19 07:14:21 +00:00
Ivan Kylchik 73a571ef7f Report warning from backend if constant expression cannot be evaluated 2022-05-18 21:20:04 +03:00
Ivan Kylchik f3252334b2 Move most of ir utils from backend.common to ir.tree 2022-05-18 21:20:03 +03:00
Ivan Kylchik 40d224d5fe Change error message of EXCEPTION_IN_CONST_VAL_INITIALIZER 2022-05-18 21:20:03 +03:00
Ivan Kylchik 001ecaa9b2 Support RENDER_DIAGNOSTICS_FULL_TEXT directive in new test infra 2022-05-18 21:20:03 +03:00
Ivan Kylchik 20d0a531df Add new tests to check evaluation of intrinsic сonsts 2022-05-18 21:20:02 +03:00
Ivan Kylchik dca22d745a Drop excessive lowerings that are replaced by ConstEvaluationLowering 2022-05-18 21:20:02 +03:00
Ivan Kylchik 0f0b48f87b Move reporting of interpreter's backend errors tests to fir module 2022-05-18 21:20:01 +03:00
Ivan Kylchik 44cf64a00c Convert const values in ranges without explicit cast 2022-05-18 21:20:01 +03:00
Ivan Kylchik 0b22cf6cb9 Rewrite ir interpreter's dump tests to box
Box tests will check the correctness of interpreter, meantime
by dumped ir we can understand that expression was folded.
2022-05-18 21:20:01 +03:00
Ivan Kylchik fac98b7787 Add possibility to dump lowered ir in tests before lowering execution 2022-05-18 21:20:00 +03:00
Ivan Kylchik 592baf134e Change ir const checker to match new rules of IntrinsicConstEvaluation 2022-05-18 21:20:00 +03:00
Ivan Kylchik 1431d4b356 Add jvm diagnostic tests to check report of exceptions from interpreter 2022-05-18 21:20:00 +03:00
Ivan Kylchik 20d8e6607d Add new diagnostic tests to check new rules for const modifier 2022-05-18 21:19:59 +03:00
Ivan Kylchik df7be06558 Add tests to check constant evaluation for intrinsic const declarations 2022-05-18 21:19:58 +03:00
Ivan Kylchik 2dcfe219be Move string concat folding into FlattenStringConcatenationLowering
Originally `FoldConstantLowering` is responsible for this, but it can
be removed in the future.
2022-05-18 21:19:58 +03:00
Ivan Kylchik 23f9e97a5f Create getInnerDeclarations function to extract statements from parent
This function is needed to be able to work with files and scripts
2022-05-18 21:19:58 +03:00
Ivan Kylchik 51ccc32a3f Update test data after introducing IntrinsicConstEvaluation annotation 2022-05-18 21:19:57 +03:00
Ivan Kylchik d0ab01ad24 Add lowering that will evaluate all intrinsic const expressions 2022-05-18 21:19:56 +03:00
Ivan Kylchik 6a0802a1be Allow interpreting code extension property 2022-05-18 21:19:56 +03:00
Ivan Kylchik 7113523e34 Support interpretation of trimMargin and trimIndent 2022-05-18 21:19:56 +03:00
Ivan Kylchik 3bf678a011 Add ONLY_INTRINSIC_CONST evaluation mode 2022-05-18 21:19:55 +03:00
Ivan Kylchik 761424b131 Add IntrinsicConstEvaluation annotation to some ir builtins functions 2022-05-18 21:19:55 +03:00
Ivan Kylchik a993939127 [FIR] Allow constant values for IntrinsicConstEvaluation declarations 2022-05-18 21:19:55 +03:00
Ivan Kylchik 4ddbb89103 [JS] Manually change receiver's type of Char's equals method
Char's equals method in js doesn't work properly because now equals
method is not fake override in Char, but it is actual override and so
when we call equals for some char in js, it will not be boxed. To fix
it we need to get correct receiver's type.
2022-05-18 21:19:54 +03:00
Ivan Kylchik 1564f2c549 Mark all declarations that will be evaluated with ir interpreter 2022-05-18 21:19:54 +03:00
Ivan Kylchik 1ccd5d1a3a Add new internal annotation IntrinsicConstEvaluation to kotlin-native 2022-05-18 21:19:53 +03:00