Fehler im Parsen von Package beheben
This commit is contained in:
parent
72f27fab7a
commit
bcee5e5209
@ -73,6 +73,7 @@ public class SyntaxTreeGenerator{
|
||||
}
|
||||
|
||||
public SourceFile convert(Java8Parser.CompilationUnitContext ctx, PackageCrawler packageCrawler) throws ClassNotFoundException{
|
||||
if(ctx.packageDeclaration()!=null)this.pkgName = convert(ctx.packageDeclaration());
|
||||
List<ClassOrInterface> classes = new ArrayList<>();
|
||||
Map<String, Integer> imports = GatherNames.getImports(ctx, packageCrawler);
|
||||
this.imports = imports.keySet().stream().map(name -> reg.getName(name)).collect(Collectors.toSet());
|
||||
@ -89,6 +90,15 @@ public class SyntaxTreeGenerator{
|
||||
return new SourceFile(this.pkgName, classes, this.imports);
|
||||
}
|
||||
|
||||
private String convert(Java8Parser.PackageDeclarationContext packageDeclarationContext) {
|
||||
String ret = "";
|
||||
for(TerminalNode identifier : packageDeclarationContext.Identifier()){
|
||||
ret += identifier.getText()+".";
|
||||
}
|
||||
ret = ret.substring(0, ret.length()-1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public Method convert(Java8Parser.MethodDeclarationContext methodDeclarationContext, JavaClassName parentClass, RefType superClass, GenericsRegistry generics) {
|
||||
Java8Parser.MethodHeaderContext header = methodDeclarationContext.methodHeader();
|
||||
int modifiers = SyntaxTreeGenerator.convert(methodDeclarationContext.methodModifier());
|
||||
@ -165,8 +175,8 @@ public class SyntaxTreeGenerator{
|
||||
}
|
||||
}
|
||||
String className = this.pkgName + (this.pkgName.length()>0?".":"") + ctx.Identifier().getText();
|
||||
JavaClassName name = reg.getName(className);
|
||||
if(! name.toString().equals(className)){
|
||||
JavaClassName name = reg.getName(className); //Holt den Package Namen mit dazu
|
||||
if(! name.toString().equals(className)){ //Kommt die Klasse schon in einem anderen Package vor?
|
||||
throw new TypeinferenceException("Name " + className + " bereits vorhanden in " + reg.getName(className).toString()
|
||||
,ctx.getStart());
|
||||
}
|
||||
|
5
test/javFiles/Package.jav
Normal file
5
test/javFiles/Package.jav
Normal file
@ -0,0 +1,5 @@
|
||||
package strucType.input;
|
||||
|
||||
class Neu
|
||||
{
|
||||
}
|
@ -66,6 +66,10 @@ public class JavaTXCompilerTest {
|
||||
execute(new File(rootDirectory+"Matrix.jav"));
|
||||
}
|
||||
@Test
|
||||
public void packageTests() throws IOException, ClassNotFoundException {
|
||||
execute(new File(rootDirectory+"Package.jav"));
|
||||
}
|
||||
@Test
|
||||
public void vector() throws IOException, ClassNotFoundException {
|
||||
execute(new File(rootDirectory+"Vector.jav"));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user