forked from JavaTX/JavaCompilerCore
newest state
This commit is contained in:
parent
514a504f0f
commit
6247416e6c
BIN
JavaTXcompiler-2.5-jar-with-dependencies.jar
Normal file
BIN
JavaTXcompiler-2.5-jar-with-dependencies.jar
Normal file
Binary file not shown.
40
compile.sh
40
compile.sh
@ -3,7 +3,7 @@
|
|||||||
SRCDIR="javatx-src/main/java"
|
SRCDIR="javatx-src/main/java"
|
||||||
DESTDIR="out"
|
DESTDIR="out"
|
||||||
JAVAC_FLAGS="-g:none -nowarn"
|
JAVAC_FLAGS="-g:none -nowarn"
|
||||||
JAVATX_COMPILER_PATH="JavaTXcompiler-2.4-jar-with-dependencies.jar"
|
JAVATX_COMPILER_PATH="JavaTXcompiler-2.5-jar-with-dependencies.jar"
|
||||||
|
|
||||||
#remove all files, if the script is called with parameter "clear"
|
#remove all files, if the script is called with parameter "clear"
|
||||||
if [ "$1" = "clean" ]; then
|
if [ "$1" = "clean" ]; then
|
||||||
@ -16,10 +16,14 @@ if [ "$1" != "" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#find all .java/.jav files recursively and store them in an array
|
#find all .java/.jav files and store paths in an array
|
||||||
|
#note: somehow absolute paths don't work correctly with find -newer
|
||||||
|
#JAVA_FILES=($(find "$SRCDIR" -name "*.java" -exec realpath {} \;))
|
||||||
|
#JAV_FILES=($(find "$SRCDIR" -name "*.jav" -exec realpath {} \;))
|
||||||
JAVA_FILES=($(find "$SRCDIR" -name "*.java"))
|
JAVA_FILES=($(find "$SRCDIR" -name "*.java"))
|
||||||
JAV_FILES=($(find "$SRCDIR" -name "*.jav"))
|
JAV_FILES=($(find "$SRCDIR" -name "*.jav"))
|
||||||
|
|
||||||
|
|
||||||
#create empty arrays for .class file paths
|
#create empty arrays for .class file paths
|
||||||
JAVA_CLASSES=()
|
JAVA_CLASSES=()
|
||||||
JAV_CLASSES=()
|
JAV_CLASSES=()
|
||||||
@ -56,22 +60,22 @@ for file in "${JAV_FILES[@]}"; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
#if [ "${#JAV_CHANGED[@]}" -ne 0 ]; then
|
||||||
|
# echo "java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/" ${JAV_CHANGED[@]}"
|
||||||
|
# java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/" "${JAV_CHANGED[@]}"
|
||||||
|
#fi
|
||||||
|
|
||||||
if [ "${#JAV_CHANGED[@]}" -ne 0 ]; then
|
if [ "${#JAV_CHANGED[@]}" -ne 0 ]; then
|
||||||
echo "java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/" ${JAV_CHANGED[@]}"
|
for ((i = 0; i < "${#JAV_CHANGED[@]}"; i++)); do
|
||||||
java -jar $JAVATX_COMPILER_PATH -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/" "${JAV_CHANGED[@]}"
|
echo "java -jar $(realpath $JAVATX_COMPILER_PATH) -d $(realpath "$DESTDIR") -cp "$(realpath $SRCDIR):$(realpath $DESTDIR):$(realpath "target/dependencies/")" ${JAV_CHANGED[i]}"
|
||||||
|
java -jar $JAVATX_COMPILER_PATH -d "$DESTDIR" -cp "$SRCDIR:$DESTDIR:target/dependencies/" "${JAV_CHANGED[i]}"
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
exit 1;
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#if [ "${#JAV_CHANGED[@]}" -ne 0 ]; then
|
if [ "${#JAVA_CHANGED[@]}" -ne 0 ]; then
|
||||||
# for ((i = 0; i < "${#JAV_CHANGED[@]}"; i++)); do
|
echo "javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/*" $JAVAC_FLAGS ${JAVA_CHANGED[@]}"
|
||||||
# echo "java -jar $JAVATX_COMPILER_PATH -d "$DESTDIR" -cp "$SRCDIR:$DESTDIR:target/dependencies/" ${JAV_CHANGED[i]}"
|
javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/*" $JAVAC_FLAGS "${JAVA_CHANGED[@]}"
|
||||||
# java -jar $JAVATX_COMPILER_PATH -d "$DESTDIR" -cp "$SRCDIR:$DESTDIR:target/dependencies/" "${JAV_CHANGED[i]}"
|
fi
|
||||||
# if [ $? -eq 1 ]; then
|
|
||||||
# exit 1;
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
#fi
|
|
||||||
|
|
||||||
#if [ "${#JAVA_CHANGED[@]}" -ne 0 ]; then
|
|
||||||
# echo "javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/*" $JAVAC_FLAGS ${JAVA_CHANGED[@]}"
|
|
||||||
# javac -d $DESTDIR -cp "$SRCDIR:$DESTDIR:target/dependencies/*" $JAVAC_FLAGS "${JAVA_CHANGED[@]}"
|
|
||||||
#fi
|
|
||||||
|
@ -16,7 +16,15 @@ import java.util.Optional;
|
|||||||
|
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import de.dhbwstuttgart.syntaxtree.*;
|
//import de.dhbwstuttgart.syntaxtree.*;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Field;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Constructor;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.Method;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.GenericDeclarationList;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.GenericTypeVar;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.TypeScope;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ASTVisitor;
|
||||||
|
|
||||||
import java.lang.Boolean;
|
import java.lang.Boolean;
|
||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
|
@ -3,8 +3,18 @@ package de.dhbwstuttgart.syntaxtree;
|
|||||||
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
||||||
import org.antlr.v4.runtime.Token;
|
import org.antlr.v4.runtime.Token;
|
||||||
|
|
||||||
|
import de.dhbwstuttgart.syntaxtree.SyntaxTreeNode;
|
||||||
|
import java.lang.String;
|
||||||
|
import java.lang.Integer;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.ASTVisitor;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.GenericTypeVar;
|
||||||
|
import java.lang.Iterable;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.TypeScope;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
//TODO: curretly types are needed, or else wrong bytecode type in visitor.accept -> runtime crash, figure out why
|
||||||
|
|
||||||
public class Field extends SyntaxTreeNode implements TypeScope {
|
public class Field extends SyntaxTreeNode implements TypeScope {
|
||||||
|
|
||||||
public final int modifier;
|
public final int modifier;
|
@ -1,8 +1,9 @@
|
|||||||
package de.dhbwstuttgart.syntaxtree;
|
package de.dhbwstuttgart.syntaxtree;
|
||||||
|
|
||||||
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
import de.dhbwstuttgart.syntaxtree.type.RefTypeOrTPHOrWildcardOrGeneric;
|
||||||
|
import de.dhbwstuttgart.syntaxtree.GenericTypeVar;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.lang.Iterable;
|
||||||
|
|
||||||
|
|
||||||
public interface TypeScope {
|
public interface TypeScope {
|
||||||
|
@ -68,7 +68,8 @@ public class FieldAssumption extends Assumption{
|
|||||||
return resolver.resolve(type);
|
return resolver.resolve(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
public getReceiverType(resolver) {
|
//Hier inferiert Java-TX RefType, obwohl RefTypeOrTPHOrWildcardOrGeneric genereller sein sollte
|
||||||
|
public RefTypeOrTPHOrWildcardOrGeneric getReceiverType(resolver) {
|
||||||
List<RefTypeOrTPHOrWildcardOrGeneric> params = new ArrayList<>();
|
List<RefTypeOrTPHOrWildcardOrGeneric> params = new ArrayList<>();
|
||||||
for(gtv : receiverClass.getGenerics()){
|
for(gtv : receiverClass.getGenerics()){
|
||||||
//Hier wird ein GenericRefType gebildet, welcher einen für dieses Feld eindeutigen Namen hat
|
//Hier wird ein GenericRefType gebildet, welcher einen für dieses Feld eindeutigen Namen hat
|
||||||
|
@ -27,6 +27,9 @@ import java.util.Objects;
|
|||||||
import java.lang.Integer;
|
import java.lang.Integer;
|
||||||
import java.lang.String;
|
import java.lang.String;
|
||||||
import java.lang.Boolean;
|
import java.lang.Boolean;
|
||||||
|
import java.lang.Iterable;
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
||||||
public class FunNClass extends ClassOrInterface {
|
public class FunNClass extends ClassOrInterface {
|
||||||
public FunNClass(funNParams) {
|
public FunNClass(funNParams) {
|
||||||
|
@ -24,13 +24,13 @@ public class TypeInferenceBlockInformation extends TypeInferenceInformation {
|
|||||||
private TypeScope methodContext;
|
private TypeScope methodContext;
|
||||||
private ClassOrInterface currentClass;
|
private ClassOrInterface currentClass;
|
||||||
|
|
||||||
public TypeInferenceBlockInformation(availableClasses, currentClass, methodContext) {
|
public TypeInferenceBlockInformation(Collection<ClassOrInterface> availableClasses, ClassOrInterface currentClass, TypeScope methodContext) {
|
||||||
super(availableClasses);
|
super(availableClasses);
|
||||||
this.methodContext = new TypeScopeContainer(currentClass, methodContext);
|
this.methodContext = new TypeScopeContainer(currentClass, methodContext);
|
||||||
this.currentClass = currentClass;
|
this.currentClass = currentClass;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TypeInferenceBlockInformation(oldScope, newScope) {
|
public TypeInferenceBlockInformation(TypeInferenceBlockInformation oldScope, TypeScope newScope) {
|
||||||
this(oldScope.getAvailableClasses(), oldScope.currentClass, new TypeScopeContainer(oldScope.methodContext, newScope));
|
this(oldScope.getAvailableClasses(), oldScope.currentClass, new TypeScopeContainer(oldScope.methodContext, newScope));
|
||||||
}
|
}
|
||||||
public getCurrentClass() {
|
public getCurrentClass() {
|
||||||
|
Loading…
Reference in New Issue
Block a user