Aufräumen

This commit is contained in:
JanUlrich 2016-12-15 16:00:28 +01:00
parent 01a954ca68
commit c34b3c4c14
2 changed files with 26 additions and 22 deletions

View File

@ -1,9 +1,7 @@
package de.dhbwstuttgart.bytecode;
import de.dhbwstuttgart.syntaxtree.type.GenericTypeVar;
import de.dhbwstuttgart.syntaxtree.type.ObjectType;
import de.dhbwstuttgart.syntaxtree.GenericTypeVar;
import de.dhbwstuttgart.syntaxtree.type.RefType;
import de.dhbwstuttgart.syntaxtree.type.Type;
import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException;
public class BytecodeTypeFactory {
@ -11,7 +9,7 @@ public class BytecodeTypeFactory {
/**
* @see https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-FieldType
*/
public static String generateFieldDescriptor(Type t){
public static String generateFieldDescriptor(RefType t){
String ret = "";
if(t instanceof RefType){
ret += "L" + t.getName().toString().replace('.', '/') + ";";
@ -39,15 +37,15 @@ public class BytecodeTypeFactory {
return ret;
}
public static String generateSuperClassSignature(Type superClass){
public static String generateSuperClassSignature(RefType superClass){
String ret = "";
//TODO:
throw new NotImplementedException();
}
private static String generateTypeParameter(GenericTypeVar gtv){
String ret = gtv.get_Name() + ":";
for(ObjectType t : gtv.getBounds()){
String ret = gtv.getName() + ":";
for(RefType t : gtv.getBounds()){
ret += generateReferenceTypeSignature(t);
ret += ":";
}
@ -65,17 +63,16 @@ public class BytecodeTypeFactory {
/**
* @see https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-ReferenceTypeSignature
*/
private static String generateReferenceTypeSignature(Type t){
private static String generateReferenceTypeSignature(RefType t){
if(t instanceof RefType)return generateReferenceTypeSignature((RefType)t);
if(t instanceof GenericTypeVar)return generateReferenceTypeSignature((GenericTypeVar)t);
throw new NotImplementedException();
}
private static String generateReferenceTypeSignature(RefType t){
String ret = "L" + t.get_Name();
String ret = "L" + t.getName();
if(t.getParaList() != null && t.getParaList().size() > 0){
ret += "<";
for(Type p : t.getParaList()){
for(RefType p : t.getParaList()){
ret += generateReferenceTypeSignature(p);
}
ret+=">";

View File

@ -1,7 +1,10 @@
package de.dhbwstuttgart.syntaxtree;
import de.dhbwstuttgart.syntaxtree.type.RefType;
import de.dhbwstuttgart.typeinference.JavaCodeResult;
import de.dhbwstuttgart.typeinference.Menge;
import de.dhbwstuttgart.typeinference.ResultSet;
import de.dhbwstuttgart.typeinference.exceptions.NotImplementedException;
import java.util.ArrayList;
import java.util.List;
@ -23,10 +26,12 @@ public class GenericTypeVar extends SyntaxTreeNode
*/
List<RefType> bounds=new ArrayList<RefType>();
private int endOffset;
private String name;
public GenericTypeVar(String s, List<RefType> bounds, int offset, int endOffset)
{
super(s, offset);
super(offset);
name = s;
if(bounds != null)for(RefType t : bounds){
//if(t!=null)this.extendVars.add(t);
}
@ -34,8 +39,7 @@ public class GenericTypeVar extends SyntaxTreeNode
this.bounds = bounds;
this.endOffset = endOffset;
}
@Override
public int getEndOffset(){
return this.endOffset;
}
@ -44,22 +48,25 @@ public class GenericTypeVar extends SyntaxTreeNode
{
return bounds;
}
public GenericTypeVar clone()
{
return new GenericTypeVar(this.getName().toString(), this.getBounds(), getOffset(), this.getEndOffset());
}
public String toString()
{
return "BoGTV " + this.getName();
return "BoGTV " + this.name;
}
@Override
public Menge<SyntaxTreeNode> getChildren() {
Menge<SyntaxTreeNode> ret = super.getChildren();
public List<SyntaxTreeNode> getChildren() {
List<SyntaxTreeNode> ret = new ArrayList<>();
ret.addAll(this.bounds);
return ret;
}
@Override
public JavaCodeResult printJavaCode(ResultSet resultSet) {
throw new NotImplementedException();
}
public String getName() {
return name;
}
}