mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 13:02:30 +07:00
[aia] evaluation. LLM-3301 CodeGen, Evaluation Plugin: implement visitor for C#. naive impl + refac other code gen visitors
GitOrigin-RevId: 714552e1b0a8b9970521f2951e028a344126d4cf
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2341c61121
commit
720bb2a282
@@ -1,26 +1,16 @@
|
||||
package com.intellij.cce.visitor
|
||||
|
||||
import com.intellij.cce.core.*
|
||||
import com.intellij.cce.visitor.exceptions.PsiConverterException
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.util.startOffset
|
||||
import com.jetbrains.python.psi.*
|
||||
import com.jetbrains.python.psi.PyFunction
|
||||
import com.jetbrains.python.psi.PyRecursiveElementVisitor
|
||||
import com.jetbrains.python.psi.PyStatementList
|
||||
|
||||
class PythonCodeGenerationVisitor : EvaluationVisitor, PsiElementVisitor() {
|
||||
private var codeFragment: CodeFragment? = null
|
||||
|
||||
override val language = Language.PYTHON
|
||||
override val feature: String = "code-generation"
|
||||
|
||||
override fun getFile(): CodeFragment = codeFragment
|
||||
?: throw PsiConverterException("Invoke 'accept' with visitor on PSI first")
|
||||
|
||||
override fun visitFile(node: PsiFile) {
|
||||
codeFragment = CodeFragment(node.textOffset, node.textLength).also {
|
||||
PythonCodeGenerationPsiVisitor(it).visitFile(node)
|
||||
}
|
||||
class PythonCodeGenerationVisitor : CodeGenerationVisitorBase(Language.PYTHON) {
|
||||
override fun createPsiVisitor(codeFragment: CodeFragment): PsiElementVisitor {
|
||||
return PythonCodeGenerationPsiVisitor(codeFragment)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.intellij.cce.visitor
|
||||
|
||||
import com.intellij.cce.core.CodeFragment
|
||||
import com.intellij.cce.core.Language
|
||||
import com.intellij.cce.visitor.exceptions.PsiConverterException
|
||||
import com.intellij.psi.PsiElementVisitor
|
||||
import com.intellij.psi.PsiFile
|
||||
|
||||
abstract class CodeGenerationVisitorBase(override val language: Language) : EvaluationVisitor, PsiElementVisitor() {
|
||||
private var codeFragment: CodeFragment? = null
|
||||
override val feature: String = "code-generation"
|
||||
|
||||
override fun getFile(): CodeFragment = codeFragment
|
||||
?: throw PsiConverterException("Invoke 'accept' with visitor on PSI first")
|
||||
|
||||
|
||||
override fun visitFile(node: PsiFile) {
|
||||
codeFragment = CodeFragment(node.textOffset, node.textLength).also {
|
||||
node.accept(createPsiVisitor(it))
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract fun createPsiVisitor(codeFragment: CodeFragment): PsiElementVisitor
|
||||
}
|
||||
Reference in New Issue
Block a user