Commit Graph

8074 Commits

Author SHA1 Message Date
Dmitry Petrov ac7cc0c08e KT-27706: Dispatch receiver type for constructor accessor is Object 2018-11-07 18:17:29 +03:00
Dmitry Petrov ea4afdaebe KT-27705: Use proper types for captured outer class instance
Call typeMapper only if we have an inline class.
2018-11-07 18:17:29 +03:00
Mikhael Bogdanov d2a205c72d Update synthetic parameter processing logic according to ASM 7 changes
#KT-27774 Fixed
2018-11-07 15:42:57 +01:00
Alexander Udalov 17d740a373 Do not try computing return type in OverloadChecker
Return type is not needed for checking overloads, but querying it may
involve resolving function bodies, which usually happens after overload
checking (see LazyTopDownAnalyzer.analyzeDeclarations) and at this point
can lead to incorrect BACKING_FIELD_REQUIRED value being computed for
some properties (see KT-27895)

 #KT-27895 Fixed
2018-11-07 11:00:15 +01:00
victor.petukhov 9a61998fca Add lexer test runner and whitespace characters tests
Whitespace characters for the tests are U+000B, U+000C, U+000D, U+0085, U+2028, U+2029
2018-11-06 11:19:15 +03:00
Mikhail Glukhikh 631adde3f5 Regenerate FIR resolve tests 2018-11-02 19:44:56 +03:00
Mikhail Glukhikh 284b21b2a6 Get rid of descriptors, resolved classifiers, + some cleanup 2018-11-02 19:44:55 +03:00
Mikhail Glukhikh 8035be07e2 FIR: built-in resolve, preliminary version #KT-24091 Fixed 2018-11-02 19:44:55 +03:00
Mikhail Glukhikh 093a236e34 FIR resolve: support star imports, enum entries 2018-11-02 19:44:55 +03:00
Mikhail Glukhikh 4d48c40832 FIR tree & builder: support expect / actual 2018-11-02 19:44:54 +03:00
Mikhail Glukhikh 9aaec1efda FIR: resolve function type parameters 2018-11-02 19:44:54 +03:00
Simon Ogorodnik 25ae12fe07 FIR: implement early type alias expansion 2018-11-02 19:44:54 +03:00
Mikhail Glukhikh d15fb1963b FIR: introduce symbols + type parameter resolve #KT-24064 Fixed 2018-11-02 19:44:53 +03:00
Simon Ogorodnik bc9175c4e8 FIR: Refactor nested scope, fix super-type resolving jump context
#KT-24017 Fixed
2018-11-02 19:44:52 +03:00
Mikhail Glukhikh f82ad6ac20 FIR: support type alias resolve 2018-11-02 19:44:52 +03:00
Mikhail Glukhikh 1ba498b021 FIR: transform types inside functions & properties 2018-11-02 19:44:52 +03:00
Mikhail Glukhikh 6c8a326e15 FIR: split transformer into three (imports / types / descriptors) 2018-11-02 19:44:52 +03:00
Simon Ogorodnik 8933c9035b FIR: introduce FIR importing scopes #KT-24096 Fixed 2018-11-02 19:44:51 +03:00
Simon Ogorodnik 3e7b9c4e27 FIR: introduce type resolvers #KT-24019 Fixed 2018-11-02 19:44:51 +03:00
Simon Ogorodnik 3e06f426d0 Raw FIR: support a bunch of new elements + some fixes
Support: calls, constructor calls, annotation calls, arguments
Support: enums, primary constructors, const modifier
Support: inner modifier, qualified types
Add: some base transformed types
Fix: acceptChildren etc.
Progress: #KT-24013
2018-11-02 19:44:49 +03:00
Mikhail Glukhikh 2c626d6c5d Implement raw FIR builder (initial version)
All necessary FIR tree implementations were created
FIR renderer & three first builder tests were added
#KT-24013 Fixed
2018-11-02 19:44:49 +03:00
Roman Artemev 7f215d3f52 Update tests 2018-11-01 16:51:38 +03:00
Alexander Udalov c5275f178a Do not use getMethod/getConstructor in reflection
Use only getDeclaredMethod/getDeclaredConstructor instead. The reason is
that getMethod/getConstructor only finds public-API (public or protected
on JVM) declarations, and to determine if a declaration is public-API in
the class file we used isPublicInBytecode, which was trying to load
annotations on the declaration to see if it was InlineOnly, and that
required lots of time-consuming actions and worsened the stack trace (as
can be seen e.g. in KT-27878). In fact, the implementation of
Class.getMethod is not supposed to do anything complicated except
loading annotations from each superclass and superinterface of the given
class. Doing it in our codebase simplifies implementation and probably
improves performance
2018-10-31 17:21:06 +01:00
Alexander Udalov 2f72f68e1a Fix loading class literal value void.class in reflection
#KT-27878 Fixed
2018-10-31 17:21:05 +01:00
Mikhail Glukhikh ad44118605 Delay UNUSED_PARAMETER on main parameter until 1.4 (part of KT-26999) 2018-10-31 19:00:29 +03:00
Dmitry Savvinov 00036ba498 [BE IR] Skip comments for determining startOffset of declaration 2018-10-31 14:52:03 +03:00
Alexander Udalov d28c6559b8 Fix support of directories as sources in build files (-Xbuild-file)
#KT-27775 Fixed
2018-10-29 11:36:29 +01:00
Mikhail Glukhikh cb92009862 Fix maven build + ~50 compiler tests broken by UNUSED_PARAMETER in main 2018-10-26 19:51:20 +03:00
Mikhail Glukhikh f3555daa60 Report UNUSED_PARAMETER on main parameter in 1.3+ #KT-26999 Fixed 2018-10-25 19:10:39 +03:00
Alexander Udalov c1ab08c8ce Refactor KClassValue to store ClassLiteralValue internally
Only invariant array projections and non-null element types will be
supported soon (see KT-26568), so it makes no sense to store the
complete type in KClassValue. What we need is only the ClassId of the
class, and the number of times it's wrapped into kotlin/Array, which is
exactly what ClassLiteralValue represents.

This change helps in decoupling annotation values from
descriptors/types. The only constant value that depends on descriptors
is now AnnotationValue.

 #KT-26582 Fixed
2018-10-25 16:27:23 +02:00
Roman Artemev 59b1743c37 Add tests 2018-10-25 15:48:42 +03:00
Mikhael Bogdanov 35fc629305 Move custom JDK tests into separate module 2018-10-25 09:15:03 +02:00
Alexander Udalov 1ee1d15b91 Support annotations on property accessors in JS/common metadata
#KT-14529 Fixed
2018-10-24 18:17:12 +02:00
Alexander Udalov 9394caf9cf Use access to backing field on overridden property with private setter
#KT-27772 Fixed
2018-10-24 12:53:50 +02:00
Mikhail Zarechenskiy bae3ff5211 Don't try parsing contract-like function not from kotlin package
Returning `null` from `doCheckContract` functions means that we
have failed to parse contract function and should report an error, but
if the called function isn't true contract, we shouldn't evaluate that code
at all.

 #KT-27758 Fixed
2018-10-24 12:03:04 +03:00
Mikhael Bogdanov 78fe9d8eee Move 'compileKotlinAgainstKotlin' java 8 tests to common 2018-10-23 16:27:51 +02:00
Mikhael Bogdanov c6b4bae81f Move 'bytecodeText' java 8 tests to common 2018-10-23 16:27:50 +02:00
Mikhael Bogdanov 4284c19a16 Move 'writeFlags' java 8 tests to common 2018-10-23 16:27:50 +02:00
Mikhael Bogdanov db25343f90 Run tests on different JDKs via different suites and custom test runner 2018-10-22 16:32:54 +02:00
Mikhael Bogdanov edc648813d Regenerate box tests 2018-10-22 16:32:52 +02:00
Alexander Udalov 5fb1bbe3f3 Add bytecode listing test on private default setter
Also fix test data of the kotlinp test and remove the newly added test
case in the obsolete PropertyGenTest

 #KT-20344 Fixed
2018-10-18 12:13:22 +02:00
Fabian Mastenbroek 05f6ed40f1 Don't generate setters for trivial private property setters
This change will prevent the compiler for generating Java bytecode for
private property setters that are trivial.

Since Kotlin uses direct field access for private properties, it will result
in the private setter never been used and since it cannot be accessed by any
other class without reflection, the setter cannot be covered by code
coverage tools.

See https://youtrack.jetbrains.com/issue/KT-20344 for the related YouTrack
issue.
2018-10-18 12:05:46 +02:00
Dmitry Petrov ad9953724f Basic infrastructure for psi2ir tests with JS front-end 2018-10-18 10:59:24 +03:00
Georgy Bronnikov 605afbae90 Move fields and init blocks of companions to their owners 2018-10-17 21:15:28 +03:00
Alexander Udalov e3a332c393 Configure Java module path when compiler is invoked in -Xbuild-file mode
#KT-27626 Fixed
2018-10-17 18:39:50 +02:00
Alexander Udalov f868964e25 Fix most unchecked/deprecation javac warnings in compiler modules 2018-10-17 18:39:49 +02:00
Alexander Udalov 23c210e9f2 Use JvmWildcard on return type of getContributedVariables/getContributedFunctions 2018-10-17 18:39:49 +02:00
Dmitry Petrov b13d270d77 Test: reference to constructor with inline class parameters 2018-10-17 16:38:22 +03:00
Dmitry Petrov 0af2a0dc19 Tests: references to private/internal primary val of inline class 2018-10-17 16:38:22 +03:00
Dmitry Petrov 5032c106af Support 'call' for references to inline class constructors
#KT-26748
2018-10-17 16:38:22 +03:00