Light classes: generate ACC_STATIC for DefaultImpls classes

To provide consistency between light classes and their delegates

IdeLightClass#testExtendingInterfaceWithDefaultImpls still failing since
    we do not generate implementations delegating to DefaultImpls of superinterfaces
This commit is contained in:
Pavel V. Talanov
2017-04-05 16:19:55 +03:00
parent 5e351061e8
commit 32d3a1b4c9
4 changed files with 7 additions and 5 deletions
@@ -48,8 +48,10 @@ class InterfaceImplBodyCodegen(
get() = (v as InterfaceImplClassBuilder).isAnythingGenerated
override fun generateDeclaration() {
val codegenFlags = ACC_PUBLIC or ACC_FINAL or ACC_SUPER
val flags = if (state.classBuilderMode == ClassBuilderMode.LIGHT_CLASSES) codegenFlags or ACC_STATIC else codegenFlags
v.defineClass(
myClass.psiOrParent, state.classFileVersion, ACC_PUBLIC or ACC_FINAL or ACC_SUPER,
myClass.psiOrParent, state.classFileVersion, flags,
typeMapper.mapDefaultImpls(descriptor).internalName,
null, "java/lang/Object", ArrayUtil.EMPTY_STRING_ARRAY
)