Line numbers for traits

This commit is contained in:
Natalia Ukhorskaya
2015-06-02 13:11:02 +03:00
parent 04db433ab5
commit 1ed9ea44a9
4 changed files with 109 additions and 1 deletions
@@ -1406,7 +1406,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
}
}
private void generateDelegationToTraitImpl(@NotNull final FunctionDescriptor traitFun, @NotNull FunctionDescriptor inheritedFun) {
private void generateDelegationToTraitImpl(@NotNull final FunctionDescriptor traitFun, @NotNull final FunctionDescriptor inheritedFun) {
functionCodegen.generateMethod(
DelegationToTraitImpl(descriptorToDeclaration(traitFun), traitFun),
inheritedFun,
@@ -1415,6 +1415,13 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
public void doGenerateBody(@NotNull ExpressionCodegen codegen, @NotNull JvmMethodSignature signature) {
DeclarationDescriptor containingDeclaration = traitFun.getContainingDeclaration();
if (!DescriptorUtils.isTrait(containingDeclaration)) return;
DeclarationDescriptor declarationInheritedFun = inheritedFun.getContainingDeclaration();
PsiElement classForInheritedFun = descriptorToDeclaration(declarationInheritedFun);
if (classForInheritedFun instanceof JetDeclaration) {
codegen.markLineNumber((JetElement) classForInheritedFun, false);
}
ClassDescriptor containingTrait = (ClassDescriptor) containingDeclaration;
Type traitImplType = typeMapper.mapTraitImpl(containingTrait);