Commit Graph

21 Commits

Author SHA1 Message Date
Pavel V. Talanov f861b69d7a Deal with cases when different visibility of overridden members could produce incorrect fake override.
(by Pavel Talanov and Andrey Breslav)
2012-07-20 18:31:05 +04:00
Andrey Breslav 3d8d92c7d3 JetDiagnosticsTest migrated to TestGenerator
- test data files renamed from *.jet to *.kt
2012-07-10 14:48:11 +04:00
Andrey Breslav 9f0f6f862a Fixing modality in fake overrides
The modality was nondeterministic before.
The main change sits in OverrideResolver: the logic of "fake override" generation is restructured so that
all the descriptors a newly created "fake" one overrides are known by the time it is created, so its
modality can be determined properly from their modalities.

Also, the ReadJavaBinaryClassTestGenerated is now a clear JUnit3 test case
2012-07-09 13:39:05 +04:00
Andrey Breslav 8611814bf4 Test data fixed 2012-06-26 23:25:52 +02:00
Andrey Breslav ceafb5ddaf Using a function type in a supertype list removed from the test 2012-06-26 23:13:54 +02:00
Svetlana Isakova b63d3905f9 KT-1256 Error highlighting in IDE should be less annoying
#KT-1256 fixed
2012-05-22 18:23:51 +04:00
Stepan Koltsov 448260fc3e KT-1996 Missing ABSTRACT_MEMBER_NOT_IMPLEMENTED when two supertypes contains same abstract member
===
trait Foo {
    fun foo(): Unit
}

trait Bar {
    fun foo(): Unit
}

class Baz : Foo, Bar // no error here
===

#KT-1996 fixed
2012-05-15 22:45:11 +04:00
Evgeny Gerashchenko 9265ce4ec9 Renumbered type and value parameters of function types.
Their numbers now start from 1. This is made for consistency with auto-generated sources for these types. Parameters of runtime types (written in Java) are numbered starting with 0, too.
2012-05-12 21:56:42 +04:00
Andrey Breslav 420a7c9ad4 KT-1961 Incorrect override error in functions with type parameter with two upper bounds
#KT-1961 Fixed
2012-05-11 18:00:09 +04:00
Svetlana Isakova bdb7de142a Member 'invoke' of function class should be abstract 2012-05-03 16:15:08 +04:00
Andrey Breslav 3ee8c5e469 A warning added: parameter names disagree upon override
This should be an error, but there is an issue with Java interop: Java parameters may change names or not have them.
2012-04-27 21:33:48 +04:00
Andrey Breslav d3ceaf7656 Copy-paste bug fixed
The test is supposed to check classes and objects
2012-04-27 20:05:42 +04:00
Andrey Breslav d67cc468d8 KT-1862 Wrong MANY_IMPL_MEMBERS_NOT_IMPLEMENTED when trait extends class
#KT-1862 Fixed
2012-04-27 10:58:27 +04:00
Andrey Breslav 058e4b833b Checks for default parameter value consistency
Inheriting default values from multiple superclasses is prohibited
2012-04-26 17:33:16 +04:00
Andrey Breslav 3a56b7905d Default parameter values are not allowed in overriding functions 2012-04-26 17:33:15 +04:00
Svetlana Isakova 5419b0a3dc Tests fixed after visibility changing 2012-03-30 13:38:36 +04:00
Stepan Koltsov ea8eb7412a kill redeclaration handler in ClassDescriptor 2012-02-19 22:02:37 +04:00
Stepan Koltsov ca8cf6cb49 missing error report on incompatible declaration
===
open class Aaaa() {
    fun bb() = 1
}

class Bbbb() : Aaaa() {
    fun <T> bb() = 1
}
===
2012-02-19 22:02:33 +04:00
Stepan Koltsov e3fdc5d595 fix a case of fake override of abstract and non-abstract function
===
open class Ccc() {
    fun foo() = 1
}

trait Ttt {
    fun foo(): Int
}

class Zzz() : Ccc(), Ttt // there must not be an error here
===

Reported by Andrey Breslav as a bug of Comparator implementation:

===
fun comparator<T>(f: (T, T) -> Int): Comparator<T> = object : Comparator<T>, Object() {
    override fun compare(o1: T, o2: T): Int = f(o1, o2)
}
===
2012-02-13 23:34:01 +04:00
Stepan Koltsov 4b94eb5e2b rewrite owner when copying FunctionDescriptor from supertype scope
that fixes invocation:

>>> StringBuilder.length()

that was compiled to

>>> invokevirtual CharSequence.length()

and now compiles to

>>> invokevirtual StringBuilder.length()

Essentially patch rewrites FunctionDescriptor.containingDeclaration
when FunctionDescriptor is copied to subclass scope.

FunctionDescriptor now has kind field that can be
* DECLARATION (for "real" function, maybe abstract)
* DELEGATION
* FAKE_OVERRIDE (created for functions from supertypes)

All tests pass although some parts of code are buggy and ugly.

Random comments about this patch:

* FunctionDescriptor.overrides point to function descriptors of supertype scopes

* Filling of memberScope with supertypes is moved to OverrideResolver

* ExpressionCodegen.intermediateValueForProperty must be rewritten

* Patch adds not nice REDECLARATION reports (see compiler/testData/diagnostics/tests/*).
  Will be fixed later.
2012-02-10 20:36:40 +04:00
Stepan Koltsov 0c821f947d split diagnostics/Override.jet test 2012-02-08 00:55:43 +04:00