Dmitry Petrov
f68ce4b35b
Support default parameter values for inline class constructors and funs
...
#KT-26908
#KT-26554
Move default parameter value tests to separate directory
2018-10-15 12:21:14 +03:00
Dmitry Petrov
7ff72e9d90
Fix inline class recursion through type parameters
...
Note that inline class such as
inline class Id<T>(val x: T)
is prohibited in 1.3.0.
2018-09-19 14:51:50 +03:00
Dmitry Petrov
006c0aa740
Hide constructors accepting inline class parameters
2018-09-07 15:57:59 +03:00
Mikhail Zarechenskiy
b4674a172e
Reserve secondary constructors with bodies inside inline classes
...
#KT-26575 Fixed
2018-09-06 10:22:01 +03:00
Mikhail Zarechenskiy
002a66fec1
Reserve box/unbox/equals/hashCode methods inside inline classes
...
#KT-26573 Fixed
2018-09-06 10:20:03 +03:00
Dmitry Petrov
a56d1d3ce8
Mangle function names with inline class parameters
...
Avoid name clashes in cases such as
inline class Login(val login: String)
inline class Password(val password: String)
fun validate(login: Login) { ... }
fun validate(password: Password) { ... }
2018-08-30 14:58:50 +03:00
Dmitry Petrov
5045fa446a
Prohibit recursive inline classes
2018-08-20 10:08:10 +03:00
Dmitry Petrov
948e72f653
Inline classes can only implement interfaces
2018-08-15 15:32:50 +03:00
Dmitry Petrov
b7df36643b
Implement additional declaration checks for inline classes
...
- Implementation by delegation is prohibited
- Delegated properties are prohibited
2018-08-13 08:49:09 +03:00
Mikhail Zarechenskiy
d3280252f9
Prohibit inline data classes
...
`CONFLICTING_JVM_DECLARATIONS` diagnostics are reported because we're
trying to generate functions from `Any` once for inline class and
once for data class
#KT-25760 Fixed
2018-08-08 15:47:26 +03:00
Mikhail Zarechenskiy
ddf6c37e0e
Prohibit inline classes with special underlying types
...
#KT-25328 Fixed
#KT-23819 Fixed
2018-08-06 10:56:05 +03:00
Mikhail Zarechenskiy
6244846107
Add functions from Any to the member scopes of inline classes
2018-08-06 10:19:43 +03:00
Mikhail Zarechenskiy
17243c08c1
Forbid lateinit variables of inline class types
...
Proper support of lateinit inline class values will be added later,
see #KT-23814
#KT-25603 Fixed
2018-07-20 13:58:33 +03:00
Mikhail Zarechenskiy
6431934c13
Fix signature mapping for built-in methods inside erased inline class
2018-06-18 18:55:18 +03:00
Mikhail Zarechenskiy
b2d9015723
Prohibit identity equals on inline class types
2018-06-07 18:22:05 +03:00
Mikhail Zarechenskiy
0da3ae328e
Handle case when u-literals are using without unsigned declarations
2018-06-04 18:37:39 +03:00
Mikhail Zarechenskiy
656f6cbded
Support constant evaluation of unsigned type constructors
...
#KT-23816 In Progress
2018-06-04 18:37:34 +03:00
Mikhail Zarechenskiy
043c3d9a97
Prohibit properties with backing fields inside inline classes
2018-05-07 15:25:43 +03:00
Mikhail Zarechenskiy
29d15b9990
Prohibit varargs on parameters of inline class types
2018-05-07 15:25:42 +03:00
Mikhail Zarechenskiy
d3c1c11dc5
Prohibit initializer blocks inside inline classes
2018-05-07 15:25:40 +03:00
Mikhail Zarechenskiy
6a120d2f85
Require presence of public primary constructor for inline class
2018-05-07 15:25:38 +03:00
Mikhail Zarechenskiy
096fe1c411
Don't report diagnostics on the whole declaration, use main keyword
2018-05-07 15:25:37 +03:00
Mikhail Zarechenskiy
71de2e3265
Report diagnostics for inline classes even if the feature is unsupported
...
This would help for those who use inline classes by suppressing error
about unsupported feature
2018-05-07 15:25:34 +03:00
Mikhail Zarechenskiy
a463fb1d5e
Add basic declaration checker for inline classes
2018-02-05 12:07:38 +03:00
Mikhail Zarechenskiy
915455ebe9
Introduce InlineClasses language feature
...
Allow to write `inline` modifier in front of class declaration
2018-02-05 12:07:38 +03:00