Build stubs for data modifier
This commit is contained in:
+2
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.decompiler.stubBuilder
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.stubs.StubElement
|
import com.intellij.psi.stubs.StubElement
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
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.INNER
|
||||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.MODALITY
|
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.MODALITY
|
||||||
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBILITY
|
import org.jetbrains.kotlin.idea.decompiler.stubBuilder.FlagsToModifiers.VISIBILITY
|
||||||
@@ -87,6 +88,7 @@ private class ClassClsStubBuilder(
|
|||||||
val relevantFlags = arrayListOf(VISIBILITY)
|
val relevantFlags = arrayListOf(VISIBILITY)
|
||||||
if (isClass()) {
|
if (isClass()) {
|
||||||
relevantFlags.add(INNER)
|
relevantFlags.add(INNER)
|
||||||
|
relevantFlags.add(DATA)
|
||||||
relevantFlags.add(MODALITY)
|
relevantFlags.add(MODALITY)
|
||||||
}
|
}
|
||||||
val additionalModifiers = when (classKind) {
|
val additionalModifiers = when (classKind) {
|
||||||
|
|||||||
+6
@@ -203,6 +203,12 @@ enum class FlagsToModifiers {
|
|||||||
override fun getModifiers(flags: Int): JetModifierKeywordToken? {
|
override fun getModifiers(flags: Int): JetModifierKeywordToken? {
|
||||||
return if (Flags.IS_INFIX.get(flags)) JetTokens.INFIX_KEYWORD else null
|
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?
|
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]
|
REFERENCE_EXPRESSION:[referencedName=c]
|
||||||
IMPORT_LIST:
|
IMPORT_LIST:
|
||||||
CLASS:[fqName=a.b.c.DataClass, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=DataClass, superNames=[]]
|
CLASS:[fqName=a.b.c.DataClass, isEnumEntry=false, isInterface=false, isLocal=false, isTopLevel=true, name=DataClass, superNames=[]]
|
||||||
MODIFIER_LIST:[public final]
|
MODIFIER_LIST:[public final data]
|
||||||
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]
|
|
||||||
PRIMARY_CONSTRUCTOR:
|
PRIMARY_CONSTRUCTOR:
|
||||||
MODIFIER_LIST:[public]
|
MODIFIER_LIST:[public]
|
||||||
VALUE_PARAMETER_LIST:
|
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:
|
||||||
+6
@@ -113,6 +113,12 @@ public class ClsStubBuilderTestGenerated extends AbstractClsStubBuilderTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Modifiers")
|
||||||
|
public void testModifiers() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/stubBuilder/Modifiers/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("MultifileClass")
|
@TestMetadata("MultifileClass")
|
||||||
public void testMultifileClass() throws Exception {
|
public void testMultifileClass() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/stubBuilder/MultifileClass/");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/stubBuilder/MultifileClass/");
|
||||||
|
|||||||
+6
@@ -107,6 +107,12 @@ public class CommonDecompiledTextFromJsMetadataTestGenerated extends AbstractCom
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Modifiers")
|
||||||
|
public void testModifiers() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Modifiers/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("Object")
|
@TestMetadata("Object")
|
||||||
public void testObject() throws Exception {
|
public void testObject() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Object/");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Object/");
|
||||||
|
|||||||
+6
@@ -95,6 +95,12 @@ public class CommonDecompiledTextTestGenerated extends AbstractCommonDecompiledT
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("Modifiers")
|
||||||
|
public void testModifiers() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/Modifiers/");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("NestedClasses")
|
@TestMetadata("NestedClasses")
|
||||||
public void testNestedClasses() throws Exception {
|
public void testNestedClasses() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/NestedClasses/");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/decompiler/decompiledText/NestedClasses/");
|
||||||
|
|||||||
Reference in New Issue
Block a user