Merge pull request #99 from udalov/kt2382
KT-2382 Placing final modifier to overriden method in trait produces runtime exception
This commit is contained in:
@@ -101,7 +101,10 @@ public class FunctionCodegen {
|
|||||||
|
|
||||||
Modality modality = functionDescriptor.getModality();
|
Modality modality = functionDescriptor.getModality();
|
||||||
if (modality == Modality.FINAL) {
|
if (modality == Modality.FINAL) {
|
||||||
flags |= ACC_FINAL;
|
DeclarationDescriptor containingDeclaration = functionDescriptor.getContainingDeclaration();
|
||||||
|
if (!(containingDeclaration instanceof ClassDescriptor) || ((ClassDescriptor)containingDeclaration).getKind() != ClassKind.TRAIT) {
|
||||||
|
flags |= ACC_FINAL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
OwnerKind kind = context.getContextKind();
|
OwnerKind kind = context.getContextKind();
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
//KT-2382
|
||||||
|
|
||||||
|
trait T {
|
||||||
|
final fun foo() = "OK"
|
||||||
|
}
|
||||||
|
|
||||||
|
class S : T { }
|
||||||
|
|
||||||
|
fun box(): String = S().foo()
|
||||||
@@ -68,4 +68,8 @@ public class TraitsTest extends CodegenTestCase {
|
|||||||
public void testKt2541() {
|
public void testKt2541() {
|
||||||
blackBoxFile("regressions/kt2541.kt");
|
blackBoxFile("regressions/kt2541.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFinalMethod() throws Exception {
|
||||||
|
blackBoxFile("traits/finalMethod.jet");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user