refactor: remove max_tokens configuration and other minor fixes

This commit is contained in:
Carl-Robert Linnupuu 2024-05-13 15:32:20 +03:00
parent 0b21652c04
commit 014f26f802
23 changed files with 219 additions and 259 deletions

View file

@ -1,7 +1,6 @@
package ee.carlrobert.codegpt.treesitter;
import org.treesitter.TSLanguage;
import org.treesitter.TSNode;
import org.treesitter.TSParser;
import org.treesitter.TSTree;
@ -16,7 +15,7 @@ public class CodeCompletionParser {
public String parse(String prefix, String suffix, String output) {
var result = new StringBuilder(output);
while (!result.isEmpty()) {
if (containsSyntaxErrors(prefix + result + suffix)) {
if (containsError(prefix + result + suffix)) {
result.deleteCharAt(result.length() - 1);
} else {
return result.toString();
@ -30,21 +29,11 @@ public class CodeCompletionParser {
return output;
}
private boolean containsSyntaxErrors(String input) {
return containsSyntaxErrors(getTree(input).getRootNode());
}
private boolean containsSyntaxErrors(TSNode node) {
if (node.isMissing() || node.hasError()) {
return true;
}
for (int i = 0; i < node.getChildCount(); i++) {
if (containsSyntaxErrors(node.getChild(i))) {
return true;
}
}
return false;
private boolean containsError(String input) {
var treeString = getTree(input).getRootNode().toString();
return treeString.contains("ERROR")
|| treeString.contains("MISSING \"}\"")
|| treeString.contains("MISSING \")\"");
}
private TSTree getTree(String input) {

View file

@ -9,17 +9,17 @@ public class CodeCompletionParserTest {
@Test
public void shouldGetValidReturnValue() {
var prefix = """
class Main {
public int getRandomNumber() {
return\s""";
class Main {
public int getRandomNumber() {
return\s""";
var suffix = """
}
}""";
}
}""";
var output = """
10;}
}
public int getRandomNumber(int k) {""";
10;}
}
public int getRandomNumber(int k) {""";
var parsedResponse = CodeCompletionParserFactory
.getParserForFileExtension("java")
@ -31,16 +31,16 @@ public class CodeCompletionParserTest {
@Test
public void shouldGetValidParenthesisValue() {
var prefix = """
class Main {
public int getRandomNumber(int\s""";
class Main {
public int getRandomNumber(int\s""";
var suffix = """
) {
return 10;
}
}""";
) {
return 10;
}
}""";
var output = """
prevNumber) {
if() {""";
prevNumber) {
if() {""";
var parsedResponse = CodeCompletionParserFactory
.getParserForFileExtension("java")
@ -49,41 +49,16 @@ public class CodeCompletionParserTest {
assertThat(parsedResponse).isEqualTo("prevNumber");
}
@Test
public void shouldHandleFieldDeclaration() {
var prefix = """
class Main {
\t
private i""";
var suffix = """
public int getRandomNumber(int prevNumber) {
return Math.of()
}
}""";
var output = """
nt randomNumber;
\s
public void get() {""";
var result = CodeCompletionParserFactory
.getParserForFileExtension("java")
.parse(prefix, suffix, output);
assertThat(result).isEqualTo("nt randomNumber;");
}
@Test
public void shouldHandleFormalParameters() {
var prefix = """
class Main {
public int getRandomNumber(""";
class Main {
public int getRandomNumber(""";
var suffix = """
) {
return 10;
}
}""";
) {
return 10;
}
}""";
var output = "int prevNumber) }";
var result = CodeCompletionParserFactory