wurstscript / WurstScript

Programming language and toolkit to create Warcraft III Maps
https://wurstlang.org
Apache License 2.0
226 stars 28 forks source link

Running "run test in current file" fails after doing any change in the file #1027

Closed Donach closed 2 years ago

Donach commented 2 years ago

Describe the bug As title states, its impossible to change a file and run the test more than once in a row, as it results in error (see attached picture). image

This is the error from console: Caused by: java.lang.RuntimeException: There was a Wurst bug in the translation of stmtif (Optional[D:\TEVE\Repositories\tever_main\wurst\CreepBundle\UnitThreatGeneral.wurst]:Optional[84]): null Please open a ticket with source code and the error log. at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateProg(ImTranslator.java:170) at de.peeeq.wurstio.languageserver.requests.RunTests.translateProg(RunTests.java:315) at de.peeeq.wurstio.languageserver.requests.RunTests.execute(RunTests.java:116) at de.peeeq.wurstio.languageserver.requests.UserRequest.run(UserRequest.java:31)

This file is rather unrelated, as I'm running the test in file called "TooltipGenerator.wurst" Workaround: Reload VSCode and run the test (works one-time only, once I do any change, error pops up again and tests do not run)

Full log: java.lang.NullPointerException at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getNameFor(ImTranslator.java:888) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getNameFor(ImTranslator.java:873) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getFuncFor(ImTranslator.java:677) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translateFunctionCall(ExprTranslation.java:545) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translateIntern(ExprTranslation.java:443) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translate(ExprTranslation.java:81) at de.peeeq.wurstscript.ast.ExprMemberMethodDotImpl.imTranslateExpr(ExprMemberMethodDotImpl.java:617) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:83) at de.peeeq.wurstscript.ast.FuncDefImpl.imTranslateEntity(FuncDefImpl.java:644) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:60) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateCompilationUnit(ImTranslator.java:340) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateProg(ImTranslator.java:146) at de.peeeq.wurstio.languageserver.requests.RunTests.translateProg(RunTests.java:315) at de.peeeq.wurstio.languageserver.requests.RunTests.execute(RunTests.java:116) at de.peeeq.wurstio.languageserver.requests.UserRequest.run(UserRequest.java:31) at de.peeeq.wurstio.languageserver.LanguageWorker.lambda$getNextWorkItem$1(LanguageWorker.java:160) at de.peeeq.wurstio.languageserver.LanguageWorker$Workitem.run(LanguageWorker.java:28) at de.peeeq.wurstio.languageserver.LanguageWorker.run(LanguageWorker.java:135) at java.lang.Thread.run(Unknown Source) Aug 23, 2021 1:05:04 AM org.eclipse.lsp4j.jsonrpc.RemoteEndpoint fallbackResponseError SEVERE: Internal error: java.lang.RuntimeException: There was a Wurst bug in the translation of stmtif (Optional[D:\TEVE\Repositories\tever_main\wurst\CreepBundle\UnitThreatGeneral.wurst]:Optional[84]): null Please open a ticket with source code and the error log. java.util.concurrent.CompletionException: java.lang.RuntimeException: There was a Wurst bug in the translation of stmtif (Optional[D:\TEVE\Repositories\tever_main\wurst\CreepBundle\UnitThreatGeneral.wurst]:Optional[84]): null Please open a ticket with source code and the error log. at java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source) at java.util.concurrent.CompletableFuture.completeThrowable(Unknown Source) at java.util.concurrent.CompletableFuture.uniAccept(Unknown Source) at java.util.concurrent.CompletableFuture$UniAccept.tryFire(Unknown Source) at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) at java.util.concurrent.CompletableFuture.completeExceptionally(Unknown Source) at de.peeeq.wurstio.languageserver.requests.UserRequest.handleException(UserRequest.java:40) at de.peeeq.wurstio.languageserver.LanguageWorker.lambda$handle$3(LanguageWorker.java:264) at java.util.concurrent.CompletableFuture.uniWhenComplete(Unknown Source) at java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(Unknown Source) at java.util.concurrent.CompletableFuture.postComplete(Unknown Source) at java.util.concurrent.CompletableFuture.completeExceptionally(Unknown Source) at de.peeeq.wurstio.languageserver.requests.UserRequest.run(UserRequest.java:34) at de.peeeq.wurstio.languageserver.LanguageWorker.lambda$getNextWorkItem$1(LanguageWorker.java:160) at de.peeeq.wurstio.languageserver.LanguageWorker$Workitem.run(LanguageWorker.java:28) at de.peeeq.wurstio.languageserver.LanguageWorker.run(LanguageWorker.java:135) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.RuntimeException: There was a Wurst bug in the translation of stmtif (Optional[D:\TEVE\Repositories\tever_main\wurst\CreepBundle\UnitThreatGeneral.wurst]:Optional[84]): null Please open a ticket with source code and the error log. at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateProg(ImTranslator.java:170) at de.peeeq.wurstio.languageserver.requests.RunTests.translateProg(RunTests.java:315) at de.peeeq.wurstio.languageserver.requests.RunTests.execute(RunTests.java:116) at de.peeeq.wurstio.languageserver.requests.UserRequest.run(UserRequest.java:31) ... 4 more Caused by: java.lang.NullPointerException at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getNameFor(ImTranslator.java:888) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getNameFor(ImTranslator.java:873) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.getFuncFor(ImTranslator.java:677) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translateFunctionCall(ExprTranslation.java:545) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translateIntern(ExprTranslation.java:443) at de.peeeq.wurstscript.translation.imtranslation.ExprTranslation.translate(ExprTranslation.java:81) at de.peeeq.wurstscript.ast.ExprMemberMethodDotImpl.imTranslateExpr(ExprMemberMethodDotImpl.java:617) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.StmtTranslation.translate(StmtTranslation.java:264) at de.peeeq.wurstscript.ast.StmtIfImpl.imTranslateStmt(StmtIfImpl.java:357) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateStatements(ImTranslator.java:1009) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:83) at de.peeeq.wurstscript.ast.FuncDefImpl.imTranslateEntity(FuncDefImpl.java:644) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:60) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.TLDTranslation.translate(TLDTranslation.java:53) at de.peeeq.wurstscript.ast.WPackageImpl.imTranslateTLD(WPackageImpl.java:445) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateCompilationUnit(ImTranslator.java:340) at de.peeeq.wurstscript.translation.imtranslation.ImTranslator.translateProg(ImTranslator.java:146) ... 7 more

null15 commented 2 years ago

That is a lot of errors!

Donach commented 2 years ago

Yeah... It is of course from code that normally compiles via runmap, I guess this was introduced with another hotfix to try to fix modules

peq commented 2 years ago

I could not reproduce this locally. Could you share some code and reproduction steps?

Donach commented 2 years ago

I could not reproduce this locally. Could you share some code and reproduction steps?

Hmm I tried to take some "small" part of the code, where it worked of course, so it seems to be simply problem when we have the full code. Its hard to separate just "some part", as its all connected together, and that way I'd have to give your quite a big chunk of the project files, which is not really preferred for us. Any other possibilities like having a call where I could walk your through it or something?

Donach commented 2 years ago

With latest build 1311, I'm not getting the error anymore. Closing.