Build stubs for data modifier

This commit is contained in:
Alexey Tsvetkov
2015-10-15 20:54:42 +03:00
parent 1973573a89
commit 28ca2e8b84
10 changed files with 51 additions and 8 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.decompiler.stubBuilder
import com.intellij.psi.PsiElement
import com.intellij.psi.stubs.StubElement
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.DATA
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.INNER
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.MODALITY
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBILITY
@@ -87,6 +88,7 @@ private class ClassClsStubBuilder(
val relevantFlags = arrayListOf(VISIBILITY)
if (isClass()) {
relevantFlags.add(INNER)
relevantFlags.add(DATA)
relevantFlags.add(MODALITY)
}
val additionalModifiers = when (classKind) {
@@ -203,6 +203,12 @@ enum class FlagsToModifiers {
override fun getModifiers(flags: Int): JetModifierKeywordToken? {
return if (Flags.IS_INFIX.get(flags)) JetTokens.INFIX_KEYWORD else null
}
},
DATA {
override fun getModifiers(flags: Int): JetModifierKeywordToken? {
return if (Flags.IS_DATA.get(flags)) JetTokens.DATA_KEYWORD else null
}
};
abstract fun getModifiers(flags: Int): JetModifierKeywordToken?
@@ -0,0 +1,8 @@
// IntelliJ API Decompiler stub source generated from a class file
// Implementation of methods is not available
package test
public final data class Modifiers public constructor() {
}
@@ -0,0 +1,3 @@
package test
data class Modifiers
@@ -7,14 +7,7 @@ PsiJetFileStubImpl[package=a.b.c]
REFERENCE_EXPRESSION:[referencedName=c]
IMPORT_LIST:
CLASS:[fqName=a.b.c.DataClass, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=DataClass, superNames=[]]
MODIFIER_LIST:[public final]
ANNOTATION_ENTRY:[hasValueArguments=false, shortName=data]
CONSTRUCTOR_CALLEE:
TYPE_REFERENCE:
USER_TYPE:[isAbsoluteInRootPackage=false]
USER_TYPE:[isAbsoluteInRootPackage=false]
REFERENCE_EXPRESSION:[referencedName=kotlin]
REFERENCE_EXPRESSION:[referencedName=data]
MODIFIER_LIST:[public final data]
PRIMARY_CONSTRUCTOR:
MODIFIER_LIST:[public]
VALUE_PARAMETER_LIST:
@@ -0,0 +1,3 @@
package test
data class Modifiers
@@ -0,0 +1,10 @@
PsiJetFileStubImpl[package=test]
PACKAGE_DIRECTIVE:
REFERENCE_EXPRESSION:[referencedName=test]
IMPORT_LIST:
CLASS:[fqName=test.Modifiers, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=Modifiers, superNames=[]]
MODIFIER_LIST:[public final data]
PRIMARY_CONSTRUCTOR:
MODIFIER_LIST:[public]
VALUE_PARAMETER_LIST:
CLASS_BODY:
@@ -113,6 +113,12 @@ public class ClsStubBuilderTestGenerated extends AbstractClsStubBuilderTest {
doTest(fileName);
}
@TestMetadata("Modifiers")
public void testModifiers() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/stubBuilder/Modifiers/");
doTest(fileName);
}
@TestMetadata("MultifileClass")
public void testMultifileClass() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/stubBuilder/MultifileClass/");
@@ -107,6 +107,12 @@ public class CommonDecompiledTextFromJsMetadataTestGenerated extends AbstractCom
doTest(fileName);
}
@TestMetadata("Modifiers")
public void testModifiers() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Modifiers/");
doTest(fileName);
}
@TestMetadata("Object")
public void testObject() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Object/");
@@ -95,6 +95,12 @@ public class CommonDecompiledTextTestGenerated extends AbstractCommonDecompiledT
doTest(fileName);
}
@TestMetadata("Modifiers")
public void testModifiers() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Modifiers/");
doTest(fileName);
}
@TestMetadata("NestedClasses")
public void testNestedClasses() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/NestedClasses/");