xpenatan/gdx-teavm

Unable to compile complex games anymore

fgnm opened this issue · 5 comments

fgnm commented

Hi, I tried many things with configurations but I wasn't able to identify the real cause of this issue.. In complex games which have many dependencies compilation doesn't work producing this strange $$__annotations__$$ error

#################################################################
|
| DEPENDENCY_ANALYSIS
|
#################################################################
|||||||||||||||||||||||||||||||||||||java.lang.IllegalArgumentException: Illegal type signature: Lcom/badlogic/gdx/graphics/VertexAttributes$ReadonlyIterable;$$__annotations__$$
	at org.teavm.model.ValueType.parse(ValueType.java:313)
	at org.teavm.dependency.DependencyAnalyzer.getSuperClassFilter(DependencyAnalyzer.java:854)
	at org.teavm.dependency.DependencyNode.getFilter(DependencyNode.java:249)
	at org.teavm.dependency.DependencyNode.filter(DependencyNode.java:235)
	at org.teavm.dependency.DependencyNode.propagate(DependencyNode.java:64)
	at org.teavm.classlib.java.lang.reflect.AnnotationDependencyListener.createAnnotationClass(AnnotationDependencyListener.java:193)
	at org.teavm.classlib.java.lang.reflect.AnnotationDependencyListener.lambda$reachGetAnnotations$0(AnnotationDependencyListener.java:164)
	at org.teavm.dependency.DependencyAnalyzer.schedulePropagation(DependencyAnalyzer.java:373)
	at org.teavm.dependency.DependencyNode.scheduleMultipleTypes(DependencyNode.java:215)
	at org.teavm.dependency.Transition.mergeDomains(Transition.java:69)
	at org.teavm.dependency.Transition.propagate(Transition.java:61)
	at org.teavm.dependency.Transition.consume(Transition.java:151)
	at org.teavm.dependency.DependencyAnalyzer.schedulePropagation(DependencyAnalyzer.java:347)
	at org.teavm.dependency.DependencyNode.scheduleMultipleTypes(DependencyNode.java:189)
	at org.teavm.dependency.Transition.mergeDomains(Transition.java:69)
	at org.teavm.dependency.Transition.propagate(Transition.java:61)
	at org.teavm.dependency.Transition.consume(Transition.java:151)
	at org.teavm.dependency.DependencyAnalyzer.schedulePropagation(DependencyAnalyzer.java:347)
	at org.teavm.dependency.DependencyNode.scheduleMultipleTypes(DependencyNode.java:189)
	at org.teavm.dependency.Transition.mergeDomains(Transition.java:69)
	at org.teavm.dependency.Transition.propagate(Transition.java:61)
	at org.teavm.dependency.Transition.consume(Transition.java:151)
	at org.teavm.dependency.DependencyAnalyzer.processNodeToNodeTransitionQueue(DependencyAnalyzer.java:676)
	at org.teavm.dependency.DependencyAnalyzer.processQueue(DependencyAnalyzer.java:641)
	at org.teavm.dependency.DependencyAnalyzer.processDependencies(DependencyAnalyzer.java:683)
	at org.teavm.vm.TeaVM.build(TeaVM.java:378)
	at org.teavm.tooling.TeaVMTool.generate(TeaVMTool.java:462)
	at com.github.xpenatan.gdx.backends.teavm.TeaBuilder.build(TeaBuilder.java:112)
	at games.rednblack.hyperrunner.teavm.Build.main(Build.java:31)

I'm really lost because I'm sure that the same project in the past was working and compiling with TeaVM.. Test repo can be found here to reproduce the issue: https://github.com/rednblackgames/tutorial-space-platform

Thanks

Yeah, very hard to know what makes annotations error. The only way to try to understand I think is to make a very simple test and reproduce it.

Maybe it's the Field generator annotation.

Hey @konsoletyper, can help with this error?

I managed to get a very simple test and for some reason when I add artemis World object the build fails with $$annotations$$ error. Every build show a different class with this annotation error.

image

Adding a breakpoint in AnnotationDependencyListener#createAnnotationClass, it also create a new classholder for Object class.
image

to build you can use this gradle cmd: "./gradlew buildExampleCoreArtemisTest". It will try to build the ArtemisTest class.

Artemis is a popular entity component system used by many java games.

@fgnm You were using artemis when build was working?

fgnm commented

Yes, the code was exactly the same when I tried TeaVM for the first time. If you remember I also PR some emu classes to make Artemis working #43

Hey @fgnm , can you to build again with snapshots?

I think I found the issue.

fgnm commented

Fixed thanks a lot! ;)