Commit Graph

45 Commits

Author SHA1 Message Date
Svetlana Isakova f811b9541c Position error on 'class A' or 'object A' instead of name identifier only 2014-09-01 12:32:51 +04:00
Zalim Bashorov c767ffc3e7 Unit.VALUE -> Unit in testData 2014-07-25 17:16:40 +04:00
Andrey Breslav 06d060d5de KT-4295 Wrong diagnostic about "weaken access privilege" when override properties in constructor
#KT-4295 Fixed
2014-07-05 17:47:00 +04:00
Andrey Breslav e2c5d9edf6 Support reporting errors on class objects and any classes or objects contained anywhere 2014-06-19 22:12:02 +04:00
Andrey Breslav f0da5d570e Do not report "accidental overrides" when "override" modifier is specified 2014-06-19 22:12:01 +04:00
Andrey Breslav 27f76630e6 ACCIDENTAL_OVERRIDE diagnostics supported
#KT-1 In Progress
2014-06-19 22:10:55 +04:00
Alexander Udalov 3c3d120004 Prohibit implicit overrides with lesser visibility
A non-abstract super-declaration is allowed to stand as 'an implementation' of
a fake override only if its visibility is not less than visibilities of all
other super-declarations

 #KT-2491 Fixed
2014-05-22 19:32:10 +04:00
Alexander Udalov db25f568dc Don't report "cannot infer visibility" on property accessors
If the diagnostic is already reported on the corresponding property, no need to
report it again for accessors
2014-05-22 19:32:10 +04:00
Alexander Udalov 9760f30c99 Don't allow fake override to inherit implementation with wrong return type
#KT-4763 Fixed
2014-05-22 19:32:10 +04:00
Alexander Udalov 5e138a606b Report "cannot infer visibility" for delegated members 2014-04-17 19:51:32 +04:00
Alexander Udalov 1deb55bfde Add positioning strategy for diagnostics on illegal fake overrides
"funcitonTypes.kt" test data file was changed because now that there is a
positioning strategy, it takes the liberty of filtering out those diagnostics
that were reported on syntactically invalid elements
2014-04-17 19:51:31 +04:00
Alexander Udalov 5ae339d940 Fix "Cannot infer visibility" for fake overrides
#KT-4785 Fixed
2014-04-17 19:51:31 +04:00
Alexander Udalov 3dffd428ad Refactor OverrideResolver and OverridingUtil
Fix warnings, simplify code. Untangle a very complex code related to
diagnostics on multiple default values and different names of parameters in
supertypes; fix a bug there, add test
2014-04-17 19:51:30 +04:00
Andrey Breslav bf2cc99109 Don't add delegated members from error types 2014-03-26 21:10:27 +04:00
Alexander Udalov 5fa1774cc1 Support hasStableParameterNames in KotlinSignature and propagation
#KT-1924 In Progress
 #KT-2830 Fixed
2014-03-19 23:24:28 +04:00
Alexander Udalov 7fcd42f40c Fix annoying parameter name override warning
Some corner cases still remain: KotlinSignature, propagation, deserialized
delegates to Java interfaces

 #KT-1239 Obsolete
 #KT-1924 In Progress
 #KT-2081 Fixed
2014-03-19 23:24:27 +04:00
Pavel V. Talanov 9599f7d98c Test for delegated members being overridden 2013-09-30 20:54:42 +04:00
Mikhael Bogdanov aa2db75266 KT-3389: Local class construction results in CompilationException && KT-2873 && KT-3210
KT-2873: VerifyError on instantiating a local class inside a closure
KT-3210 Inline Class: CompilationException: Back-end (JVM) Internal error: wrong code generated java.lang.ArrayIndexOutOfBoundsException null

 #KT-3389 Fixed
2013-04-24 13:49:47 +04:00
Alexander Udalov 6f6cb03549 Make FunctionN interfaces
FunctionN and ExtensionFunctionN are now interfaces, with the corresponding
implementations in FunctionImplN and ExtensionFunctionImplN

Update test data
2013-04-22 17:59:29 +04:00
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