[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:
anton.spilnyy
2024-07-01 13:57:49 +02:00
committed by intellij-monorepo-bot
parent 2341c61121
commit 720bb2a282
2 changed files with 30 additions and 16 deletions

View File

@@ -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)
}
}

View File

@@ -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
}