Skip to content

Added an additional catch for RecordDeclaration #10

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

MercerK
Copy link

@MercerK MercerK commented Jul 28, 2022

Hey! I want to start off by stating that this library is amazing. Thank you for your hard work! It is an absolute game changer.

When I was trying to build it against io.papermc.paper:paper-api:1.19.1-R0.1-SNAPSHOT, it was failing specifically at https://jd.papermc.io/paper/1.19/io/papermc/paper/event/world/StructuresLocateEvent.html. It seems that JavaParser doesn't understand record just yet (javaparser/javaparser#2446, javaparser/javaparser#3556).

I went ahead and added an additional catch, so the tool can still build and updated the JavaParser dependency.

With these changes, I was able to produce:

image

MercerK added 2 commits July 27, 2022 23:00
* StructuresLocateEvent leverages a `record` which isn't supported by JavaParser just yet.
@MercerK
Copy link
Author

MercerK commented Jul 28, 2022

Copy of original error.

Exception in thread "main" java.lang.IllegalArgumentException: com.github.javaparser.ast.body.RecordDeclaration
        at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFactory.toTypeDeclaration(JavaParserFactory.java:190)
        at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.getTypeDeclaration(JavaParserFacade.java:797)
        at com.github.javaparser.symbolsolver.javaparsermodel.contexts.JavaParserTypeDeclarationAdapter.solveType(JavaParserTypeDeclarationAdapter.java:82)   
        at com.github.javaparser.symbolsolver.javaparsermodel.contexts.ClassOrInterfaceDeclarationContext.solveType(ClassOrInterfaceDeclarationContext.java:106)
        at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.convertToUsage(JavaParserFacade.java:680)
        at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.convert(JavaParserFacade.java:740)
        at com.github.javaparser.symbolsolver.javaparsermodel.JavaParserFacade.convert(JavaParserFacade.java:736)
        at com.github.javaparser.symbolsolver.javaparsermodel.declarations.JavaParserFieldDeclaration.getType(JavaParserFieldDeclaration.java:63)
        at io.github.bensku.tsbind.AstGenerator.processFieldValue(AstGenerator.java:437)
        at io.github.bensku.tsbind.AstGenerator.processField(AstGenerator.java:404)
        at io.github.bensku.tsbind.AstGenerator.processMember(AstGenerator.java:154)
        at io.github.bensku.tsbind.AstGenerator.processType(AstGenerator.java:259)
        at io.github.bensku.tsbind.AstGenerator.parseType(AstGenerator.java:89)        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)    
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at io.github.bensku.tsbind.cli.BindGenApp.main(BindGenApp.java:127)

@bensku
Copy link
Owner

bensku commented Sep 15, 2022

Apologies for slow response. I would prefer to waiting for JavaParser to fix their record support (or alternative, find a workaround that doesn't just ignore records). Since I don't distribute binaries, users need to compile it themself in any case.

@bensku bensku mentioned this pull request Sep 15, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants