mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[workspace model codegen] refactoring: move CodeWriter class and tests to devkit plugin
This is needed to get rid of dependencies on PSI in workspaceModel.codegen module and extract it to a separate library (IDEA-297350). GitOrigin-RevId: 36cd0cafc04b6f7f92a4c746fbec473b35b5f925
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1b5f0ee795
commit
609db74db6
2
.idea/modules.xml
generated
2
.idea/modules.xml
generated
@@ -557,6 +557,7 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/devkit/intellij.devkit.themes/intellij.devkit.themes.iml" filepath="$PROJECT_DIR$/plugins/devkit/intellij.devkit.themes/intellij.devkit.themes.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/devkit/intellij.devkit.uiDesigner/intellij.devkit.uiDesigner.iml" filepath="$PROJECT_DIR$/plugins/devkit/intellij.devkit.uiDesigner/intellij.devkit.uiDesigner.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/devkit/intellij.devkit.workspaceModel/intellij.devkit.workspaceModel.iml" filepath="$PROJECT_DIR$/plugins/devkit/intellij.devkit.workspaceModel/intellij.devkit.workspaceModel.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/devkit/intellij.devkit.workspaceModel/tests/intellij.devkit.workspaceModel.tests.iml" filepath="$PROJECT_DIR$/plugins/devkit/intellij.devkit.workspaceModel/tests/intellij.devkit.workspaceModel.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/intellij.eclipse.iml" filepath="$PROJECT_DIR$/plugins/eclipse/intellij.eclipse.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/common-eclipse-util/intellij.eclipse.common.iml" filepath="$PROJECT_DIR$/plugins/eclipse/common-eclipse-util/intellij.eclipse.common.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/plugins/eclipse/jps-plugin/intellij.eclipse.jps.iml" filepath="$PROJECT_DIR$/plugins/eclipse/jps-plugin/intellij.eclipse.jps.iml" />
|
||||
@@ -910,7 +911,6 @@
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/vcs-tests/intellij.platform.vcs.tests.iml" filepath="$PROJECT_DIR$/platform/vcs-tests/intellij.platform.vcs.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/warmup/intellij.platform.warmup.iml" filepath="$PROJECT_DIR$/platform/warmup/intellij.platform.warmup.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/workspaceModel/codegen/intellij.platform.workspaceModel.codegen.iml" filepath="$PROJECT_DIR$/platform/workspaceModel/codegen/intellij.platform.workspaceModel.codegen.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/workspaceModel/codegen/test/intellij.platform.workspaceModel.codegen.test.iml" filepath="$PROJECT_DIR$/platform/workspaceModel/codegen/test/intellij.platform.workspaceModel.codegen.test.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/workspaceModel/jps/intellij.platform.workspaceModel.jps.iml" filepath="$PROJECT_DIR$/platform/workspaceModel/jps/intellij.platform.workspaceModel.jps.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/workspaceModel/jps/tests/intellij.platform.workspaceModel.jps.tests.iml" filepath="$PROJECT_DIR$/platform/workspaceModel/jps/tests/intellij.platform.workspaceModel.jps.tests.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/platform/workspaceModel/storage/intellij.platform.workspaceModel.storage.iml" filepath="$PROJECT_DIR$/platform/workspaceModel/storage/intellij.platform.workspaceModel.storage.iml" />
|
||||
|
||||
@@ -192,8 +192,8 @@
|
||||
<orderEntry type="module" module-name="intellij.ant.jps.tests" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.vcs.gitlab" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="intellij.platform.warmup" scope="RUNTIME" />
|
||||
<orderEntry type="module" module-name="intellij.platform.workspaceModel.codegen.test" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.devkit.workspaceModel.tests" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.remoteControl" scope="RUNTIME" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -16,15 +16,18 @@ import com.intellij.workspaceModel.codegen.writer.allFields
|
||||
import com.intellij.workspaceModel.codegen.writer.isStandardInterface
|
||||
import com.intellij.workspaceModel.codegen.writer.javaName
|
||||
import com.intellij.workspaceModel.codegen.writer.type
|
||||
import com.intellij.workspaceModel.storage.CodeGeneratorVersions
|
||||
import com.intellij.workspaceModel.storage.GeneratedCodeApiVersion
|
||||
import com.intellij.workspaceModel.storage.ModifiableWorkspaceEntity
|
||||
import com.intellij.workspaceModel.storage.MutableEntityStorage
|
||||
import com.intellij.workspaceModel.storage.*
|
||||
import com.intellij.workspaceModel.storage.impl.containers.toMutableWorkspaceList
|
||||
import com.intellij.workspaceModel.storage.impl.containers.toMutableWorkspaceSet
|
||||
import org.jetbrains.deft.ObjBuilder
|
||||
import org.jetbrains.deft.Type
|
||||
|
||||
val SKIPPED_TYPES: Set<String> = setOfNotNull(WorkspaceEntity::class.simpleName,
|
||||
ReferableWorkspaceEntity::class.simpleName,
|
||||
ModifiableWorkspaceEntity::class.simpleName,
|
||||
ModifiableReferableWorkspaceEntity::class.simpleName,
|
||||
WorkspaceEntityWithPersistentId::class.simpleName)
|
||||
|
||||
fun ObjClass<*>.generateBuilderCode(): String = lines {
|
||||
line("@${GeneratedCodeApiVersion::class.fqn}(${CodeGeneratorVersions.API_VERSION})")
|
||||
val (typeParameter, typeDeclaration) =
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.devkit.workspaceModel
|
||||
|
||||
import com.intellij.devkit.workspaceModel.codegen.writer.CodeWriter
|
||||
import com.intellij.openapi.application.WriteAction
|
||||
import com.intellij.openapi.diagnostic.logger
|
||||
import com.intellij.openapi.module.Module
|
||||
@@ -11,7 +12,6 @@ import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VfsUtilCore
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.workspaceModel.codegen.CodeWriter
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.jps.model.java.JpsJavaExtensionService
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.workspaceModel.codegen
|
||||
package com.intellij.devkit.workspaceModel.codegen.writer
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import com.intellij.openapi.application.ex.ApplicationManagerEx
|
||||
@@ -21,23 +21,18 @@ import com.intellij.psi.impl.source.codeStyle.CodeEditUtil
|
||||
import com.intellij.util.concurrency.annotations.RequiresWriteLock
|
||||
import com.intellij.util.containers.FactoryMap
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import com.intellij.workspaceModel.codegen.SKIPPED_TYPES
|
||||
import com.intellij.workspaceModel.codegen.deft.model.KtObjModule
|
||||
import com.intellij.workspaceModel.codegen.engine.GeneratedCode
|
||||
import com.intellij.workspaceModel.codegen.engine.impl.CodeGeneratorImpl
|
||||
import com.intellij.workspaceModel.codegen.javaFullName
|
||||
import com.intellij.workspaceModel.codegen.model.convertToObjModules
|
||||
import com.intellij.workspaceModel.codegen.utils.Imports
|
||||
import com.intellij.workspaceModel.storage.*
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.children
|
||||
import org.jetbrains.kotlin.resolve.ImportPath
|
||||
|
||||
val SKIPPED_TYPES = setOf(WorkspaceEntity::class.simpleName,
|
||||
ReferableWorkspaceEntity::class.simpleName,
|
||||
ModifiableWorkspaceEntity::class.simpleName,
|
||||
ModifiableReferableWorkspaceEntity::class.simpleName,
|
||||
WorkspaceEntityWithPersistentId::class.simpleName)
|
||||
|
||||
private val LOG = logger<CodeWriter>()
|
||||
|
||||
object CodeWriter {
|
||||
@@ -96,7 +91,7 @@ object CodeWriter {
|
||||
addInnerDeclarations(apiClass, code, apiImports)
|
||||
val topLevelCode = code.topLevelCode
|
||||
if (topLevelCode != null) {
|
||||
val declarations = psiFactory.createFile(apiImports.findAndRemoveFqns(code.topLevelCode)).declarations
|
||||
val declarations = psiFactory.createFile(apiImports.findAndRemoveFqns(code.topLevelCode!!)).declarations
|
||||
topLevelDeclarations.putValue(apiFile, apiClass to declarations)
|
||||
}
|
||||
val implementationClassText = code.implementationClass
|
||||
@@ -7,10 +7,9 @@
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="kotlin-test" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="kotlin-test-junit" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="JUnit5" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.testFramework" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.devkit.workspaceModel" scope="TEST" />
|
||||
<orderEntry type="module" module-name="kotlin.test-framework" scope="TEST" />
|
||||
<orderEntry type="module" module-name="kotlin.idea" scope="TEST" />
|
||||
<orderEntry type="module" module-name="kotlin.formatter" scope="TEST" />
|
||||
@@ -1,7 +1,8 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.workspaceModel.codegen
|
||||
package com.intellij.devkit.workspaceModel
|
||||
|
||||
import com.intellij.application.options.CodeStyle
|
||||
import com.intellij.devkit.workspaceModel.codegen.writer.CodeWriter
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.application.runWriteActionAndWait
|
||||
import com.intellij.openapi.editor.ex.EditorSettingsExternalizable
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.workspaceModel.codegen
|
||||
package com.intellij.devkit.workspaceModel
|
||||
|
||||
import com.intellij.openapi.application.ex.PathManagerEx
|
||||
import java.io.File
|
||||
@@ -7,7 +7,7 @@ import java.nio.file.Path
|
||||
|
||||
class EntityCodeGenTest : CodeGenerationTestBase() {
|
||||
override val testDataDirectory: File
|
||||
get() = File(PathManagerEx.getCommunityHomePath() + "/platform/workspaceModel/codegen/test/testData/$testDirectoryName")
|
||||
get() = File(PathManagerEx.getCommunityHomePath() + "/plugins/devkit/intellij.devkit.workspaceModel/tests/testData/$testDirectoryName")
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.workspaceModel.codegen
|
||||
package com.intellij.devkit.workspaceModel
|
||||
|
||||
import com.intellij.openapi.application.runWriteActionAndWait
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
@@ -1,11 +1,13 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.workspaceModel.codegen
|
||||
package com.intellij.devkit.workspaceModel
|
||||
|
||||
import com.intellij.workspaceModel.codegen.InterfaceTraverser
|
||||
import com.intellij.workspaceModel.codegen.InterfaceVisitor
|
||||
import com.intellij.workspaceModel.codegen.deft.model.*
|
||||
import com.intellij.workspaceModel.codegen.deft.*
|
||||
import com.intellij.workspaceModel.codegen.deft.Field
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Test
|
||||
import kotlin.test.assertEquals
|
||||
|
||||
class InterfaceTraverserTest {
|
||||
@Test
|
||||
Reference in New Issue
Block a user