Commit Graph

26 Commits

Author SHA1 Message Date
Nikolay Krasko 54ae3afcde KT-880 Overload resolution ambiguity
#KT-880 Fixed
2013-02-11 16:09:23 +04:00
Andrey Breslav c9e9175a88 EA-37399 - ISE: OverrideResolver.findInvisibleOverriddenDescriptor
Each of the duplicated methods in the subclass should get the same set of overridden descriptors
2012-09-18 22:01:39 +04:00
Andrey Breslav 5eaa5b396b Removing usages of tuples from test data
(KT-2358 Drop tuples)
 #KT-2358 In progress
2012-09-18 20:27:09 +04:00
Alexander Udalov c29312043c Refactor OverrideResolver.checkOverrideForMember()
Create CheckOverrideReportStrategy interface to report override errors
(will be used later for synthesized members override checks).

Add diagnostic test on OVERRIDING_FINAL_MEMBER, as no such test happened
to exist before.
2012-09-07 19:00:04 +04:00
Svetlana Isakova 65ddcd0473 No repeat 'many impl member not implemented' error
in a subclass if there is one in a superclass
2012-08-16 18:39:23 +04:00
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