From ddbcc5ee6ebc823ee0d7f2bff47153dca5fea0e1 Mon Sep 17 00:00:00 2001 From: JanUlrich Date: Fri, 16 Dec 2016 14:33:04 +0100 Subject: [PATCH] =?UTF-8?q?GenericType=20f=C3=BCr=20Bytecodegenerierung=20?= =?UTF-8?q?eingef=C3=BChrt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bytecode/BytecodeTypeFactory.java | 6 ++-- .../syntaxtree/type/RefType.java | 35 ++++++++++--------- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java b/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java index 14b77bca..ae81b358 100644 --- a/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java +++ b/src/de/dhbwstuttgart/bytecode/BytecodeTypeFactory.java @@ -64,8 +64,8 @@ public class BytecodeTypeFactory { * @see https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-ReferenceTypeSignature */ private static String generateTypeSignature(RefType t){ - if(t.isGenericType())return generateReferenceTypeSignature(t); - return generateGenericTypeSignature(t); + if(t.isGenericType())return generateGenericTypeSignature(t); + return generateReferenceTypeSignature(t); } private static String generateReferenceTypeSignature(RefType t){ @@ -81,7 +81,7 @@ public class BytecodeTypeFactory { } private static String generateGenericTypeSignature(RefType t){ - String ret = "T" + t.get_Name(); + String ret = "T" + t.getName(); return ret + ";"; } diff --git a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java index c2d1fcbd..c6016afb 100755 --- a/src/de/dhbwstuttgart/syntaxtree/type/RefType.java +++ b/src/de/dhbwstuttgart/syntaxtree/type/RefType.java @@ -3,7 +3,6 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import de.dhbwstuttgart.typeinference.Menge; import de.dhbwstuttgart.bytecode.ClassGenerator; import de.dhbwstuttgart.typecheck.JavaClassName; import de.dhbwstuttgart.syntaxtree.Class; @@ -27,13 +26,7 @@ public class RefType extends SyntaxTreeNode private boolean IsArray = false; protected JavaClassName name; protected List parameter = null; - /** - * Ist primitiveFlag auf true, muss beim Codegen dieser Reftype durch - * den primitiven Datentyp ersetzt werden - * - * Bsp: java.lang.Integer mit Flag wird dann zu [int] - */ - private boolean primitiveFlag=false; + private boolean isGeneric = false; public RefType(JavaClassName fullyQualifiedName, int offset) { @@ -49,11 +42,18 @@ public class RefType extends SyntaxTreeNode return hash; } - public RefType(JavaClassName fullyQualifiedName, List parameter, int offset) - { - this(fullyQualifiedName, offset); - if(parameter != null && parameter.size()>0)this.parameter = parameter; - } + public RefType(JavaClassName fullyQualifiedName, List parameter, int offset) + { + this(fullyQualifiedName, offset); + if(parameter != null && parameter.size()>0)this.parameter = parameter; + } + + public RefType(JavaClassName fullyQualifiedName, List parameter, boolean isGneric,int offset) + { + this(fullyQualifiedName, offset); + if(parameter != null && parameter.size()>0)this.parameter = parameter; + this.isGeneric = isGneric; + } public JavaClassName getName() { @@ -127,10 +127,9 @@ public class RefType extends SyntaxTreeNode public String toString() { - String primitiveFlagMarker=primitiveFlag?"*":""; if(parameter==null) { - return name+primitiveFlagMarker; + return this.getName().toString(); } else { @@ -146,7 +145,7 @@ public class RefType extends SyntaxTreeNode } String ret = name.toString(); if(parameter.size()>0)ret += "<"+para + " >"; - return ret + primitiveFlagMarker;//name + "<"+para + " >" +primitiveFlagMarker; + return ret; } } @@ -250,5 +249,9 @@ public class RefType extends SyntaxTreeNode } return ret; } + + public boolean isGenericType() { + return isGeneric; + } }