From 28ca2e8b8409e88d3ec26a87099711d834e82983 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 15 Oct 2015 20:54:42 +0300 Subject: [PATCH] Build stubs for data modifier --- .../idea/decompiler/stubBuilder/ClassClsStubBuilder.kt | 2 ++ .../idea/decompiler/stubBuilder/clsStubBuilding.kt | 6 ++++++ .../decompiler/decompiledText/Modifiers.expected.kt | 8 ++++++++ .../decompiler/decompiledText/Modifiers/Modifiers.kt | 3 +++ .../decompiler/stubBuilder/DataClass/DataClass.txt | 9 +-------- .../decompiler/stubBuilder/Modifiers/Modifiers.kt | 3 +++ .../decompiler/stubBuilder/Modifiers/Modifiers.txt | 10 ++++++++++ .../stubBuilder/ClsStubBuilderTestGenerated.java | 6 ++++++ ...ommonDecompiledTextFromJsMetadataTestGenerated.java | 6 ++++++ .../textBuilder/CommonDecompiledTextTestGenerated.java | 6 ++++++ 10 files changed, 51 insertions(+), 8 deletions(-) create mode 100644 idea/testData/decompiler/decompiledText/Modifiers.expected.kt create mode 100644 idea/testData/decompiler/decompiledText/Modifiers/Modifiers.kt create mode 100644 idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.kt create mode 100644 idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.txt diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt index 76bc5acf9e1..c7f947dd215 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClassClsStubBuilder.kt @@ -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) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt index 9356b65f25e..ac6023f1207 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/stubBuilder/clsStubBuilding.kt @@ -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? diff --git a/idea/testData/decompiler/decompiledText/Modifiers.expected.kt b/idea/testData/decompiler/decompiledText/Modifiers.expected.kt new file mode 100644 index 00000000000..ddb9f0dbb8c --- /dev/null +++ b/idea/testData/decompiler/decompiledText/Modifiers.expected.kt @@ -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() { +} + diff --git a/idea/testData/decompiler/decompiledText/Modifiers/Modifiers.kt b/idea/testData/decompiler/decompiledText/Modifiers/Modifiers.kt new file mode 100644 index 00000000000..2088a71a438 --- /dev/null +++ b/idea/testData/decompiler/decompiledText/Modifiers/Modifiers.kt @@ -0,0 +1,3 @@ +package test + +data class Modifiers \ No newline at end of file diff --git a/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt b/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt index 82a38a2011b..4b90a654d32 100644 --- a/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt +++ b/idea/testData/decompiler/stubBuilder/DataClass/DataClass.txt @@ -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: diff --git a/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.kt b/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.kt new file mode 100644 index 00000000000..2088a71a438 --- /dev/null +++ b/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.kt @@ -0,0 +1,3 @@ +package test + +data class Modifiers \ No newline at end of file diff --git a/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.txt b/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.txt new file mode 100644 index 00000000000..eb08f37b895 --- /dev/null +++ b/idea/testData/decompiler/stubBuilder/Modifiers/Modifiers.txt @@ -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: diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubBuilderTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubBuilderTestGenerated.java index 64d09bf7141..3c431cec5e8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubBuilderTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubBuilderTestGenerated.java @@ -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/"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextFromJsMetadataTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextFromJsMetadataTestGenerated.java index 9197fea28ae..d3da0ade15b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextFromJsMetadataTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextFromJsMetadataTestGenerated.java @@ -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/"); diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextTestGenerated.java index 8ce0b30cf3a..b8ebbb7770a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/CommonDecompiledTextTestGenerated.java @@ -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/");