Started test driven bug fixing for SyntaxTreeGenerator

This commit is contained in:
luca9913 2023-06-07 22:24:16 +02:00
parent bf15ff693e
commit f08744479a
3 changed files with 16 additions and 9 deletions

View File

@ -475,7 +475,7 @@ blockStatement
; ;
localVariableDeclaration localVariableDeclaration
: variableModifier* (VAR identifier '=' expression | typeType? variableDeclarators) : variableModifier* (VAR identifier '=' expression | typeType variableDeclarators)
; ;
identifier identifier

View File

@ -381,8 +381,12 @@ public class StatementGenerator {
type = TypeGenerator.convert(declaration.typeType(), reg, generics); type = TypeGenerator.convert(declaration.typeType(), reg, generics);
} }
if (Objects.isNull(declaration.variableDeclarators())) { if (Objects.isNull(declaration.variableDeclarators())) {
Token offset = declaration.identifier().getStart(); IdentifierContext identifier = declaration.identifier();
ret.add(new Assign(new AssignToLocal(new LocalVar(declaration.identifier().getText(), type, offset)), convert(declaration.expression()), offset)); Token offset = identifier.getStart();
String name = identifier.getText();
ret.add(new LocalVarDecl(name, type, offset));
this.localVars.put(name, type);
ret.add(new Assign(new AssignToLocal(new LocalVar(name, type, offset)), convert(declaration.expression()), offset));
} else { } else {
ret.addAll(generateLocalVariableAssignments(declaration.variableDeclarators().variableDeclarator(), type)); ret.addAll(generateLocalVariableAssignments(declaration.variableDeclarators().variableDeclarator(), type));
} }
@ -545,9 +549,9 @@ public class StatementGenerator {
} }
ArgumentList argumentList = convertArguments(expr.expressionList()); ArgumentList argumentList = convertArguments(expr.expressionList());
ArrayList<RefTypeOrTPHOrWildcardOrGeneric> argTypes = argumentList.getArguments().stream().map(x -> (RefTypeOrTPHOrWildcardOrGeneric) TypePlaceholder.fresh(offset)).collect(Collectors.toCollection(ArrayList::new)); ArrayList<RefTypeOrTPHOrWildcardOrGeneric> signature = argumentList.getArguments().stream().map(x -> (RefTypeOrTPHOrWildcardOrGeneric) TypePlaceholder.fresh(offset)).collect(Collectors.toCollection(ArrayList::new));
signature.add(TypePlaceholder.fresh(offset)); // return type
MethodCall ret = new MethodCall(TypePlaceholder.fresh(offset), getReceiver(receiver), name, argumentList, TypePlaceholder.fresh(offset), argTypes, offset); MethodCall ret = new MethodCall(TypePlaceholder.fresh(offset), getReceiver(receiver), name, argumentList, TypePlaceholder.fresh(offset), signature, offset);
ret.setStatement(); ret.setStatement();
return ret; return ret;
} }
@ -561,9 +565,9 @@ public class StatementGenerator {
name = expr.SUPER().getText(); name = expr.SUPER().getText();
} }
ArgumentList argumentList = convertArguments(expr.expressionList()); ArgumentList argumentList = convertArguments(expr.expressionList());
ArrayList<RefTypeOrTPHOrWildcardOrGeneric> argTypes = argumentList.getArguments().stream().map(x -> (RefTypeOrTPHOrWildcardOrGeneric) TypePlaceholder.fresh(offset)).collect(Collectors.toCollection(ArrayList::new)); ArrayList<RefTypeOrTPHOrWildcardOrGeneric> signature = argumentList.getArguments().stream().map(x -> (RefTypeOrTPHOrWildcardOrGeneric) TypePlaceholder.fresh(offset)).collect(Collectors.toCollection(ArrayList::new));
signature.add(TypePlaceholder.fresh(offset)); // return type
MethodCall ret = new MethodCall(TypePlaceholder.fresh(offset), getReceiver(receiver), name, argumentList, TypePlaceholder.fresh(offset), argTypes, offset); MethodCall ret = new MethodCall(TypePlaceholder.fresh(offset), getReceiver(receiver), name, argumentList, TypePlaceholder.fresh(offset), signature, offset);
ret.setStatement(); ret.setStatement();
return ret; return ret;
} }

View File

@ -14,6 +14,9 @@ import org.junit.Test;
import de.dhbwstuttgart.core.JavaTXCompiler; import de.dhbwstuttgart.core.JavaTXCompiler;
import de.dhbwstuttgart.syntaxtree.visual.ASTPrinter; import de.dhbwstuttgart.syntaxtree.visual.ASTPrinter;
/**
* Unit-Tests für den 'SyntaxTreeGenerator' aus dem Package 'parser' nach Vorbild der Klasse 'TestComplete' aus dem Test-Package 'targetast'
*/
public class TestComplete { public class TestComplete {
private static HashMap<String, File[]> javFiles = new HashMap<>(); private static HashMap<String, File[]> javFiles = new HashMap<>();