IntelliJ-Luanalysis icon indicating copy to clipboard operation
IntelliJ-Luanalysis copied to clipboard

crash when indexing the test files from full-moon lua parser

Open matthargett opened this issue 3 years ago • 0 comments

Environment

Name Version
IDEA version 2021.3.2
Luanalysis version 1.2.2-IDEA203
OS macOS 11.6.2

Preferences

Lua

Name Setting
Language level Lua 5.1

Type Safety

Name Setting
Strict nil checks
Unknown type (any) is indexable ☑️
Unknown type (any) is callabale ☑️

What are the steps to reproduce this issue?

  1. in CLion, add Rust and LuaAnalysis plugins
  2. checkout the full-moon source code at https://github.com/Kampfkarren/full-moon/
  3. File -> Open -> full-moon

What happens?

crash on indexing the source test files:

Error while indexing /Users/mhargett/Library/Application Support/JetBrains/Toolbox/apps/CLion/ch-0/213.6461.75/CLion.app.plugins/IntelliJ-Luanalysis/lib/IntelliJ-Luanalysis-1.2.2-IDEA203.jar!/std/Lua53/bit32.def.lua
To reindex this file IDEA has to be restarted

java.lang.NoClassDefFoundError: Could not initialize class com.tang.intellij.lua.ty.TyTable
	at com.tang.intellij.lua.ty.ExpressionsKt.infer(Expressions.kt:509)
	at com.tang.intellij.lua.ty.ExpressionsKt.inferExprInner(Expressions.kt:103)
	at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:61)
	at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:37)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:27)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:24)
	at com.tang.intellij.lua.search.RecursionGuardsKt.withRecursionGuard(RecursionGuards.kt:52)
	at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:26)
	at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:32)
	at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:163)
	at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:33)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:55)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:34)
	at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:60)
	at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:55)
	at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:31)
	at com.tang.intellij.lua.psi.LuaPsiImplUtilKt$guessTypeAt$1.invoke(LuaPsiImplUtil.kt:267)
	at com.tang.intellij.lua.psi.LuaPsiImplUtilKt$guessTypeAt$1.invoke(LuaPsiImplUtil.kt)
	at com.tang.intellij.lua.search.SearchContext.withIndex(SearchContext.kt:118)
	at com.tang.intellij.lua.psi.LuaPsiImplUtilKt.guessTypeAt(LuaPsiImplUtil.kt:266)
	at com.tang.intellij.lua.psi.impl.LuaExprListImpl.guessTypeAt(LuaExprListImpl.java:46)
	at com.tang.intellij.lua.ty.ExpressionsKt$getType$2.invoke(Expressions.kt:415)
	at com.tang.intellij.lua.ty.ExpressionsKt$getType$2.invoke(Expressions.kt)
	at com.tang.intellij.lua.search.SearchContext.withIndex(SearchContext.kt:118)
	at com.tang.intellij.lua.ty.ExpressionsKt.getType(Expressions.kt:414)
	at com.tang.intellij.lua.ty.ExpressionsKt.access$getType(Expressions.kt:1)
	at com.tang.intellij.lua.ty.ExpressionsKt$infer$3.compute(Expressions.kt:390)
	at com.tang.intellij.lua.ty.ExpressionsKt$infer$3.compute(Expressions.kt)
	at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:114)
	at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:44)
	at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)
	at com.tang.intellij.lua.ext.UtilsKt.recursionGuard(utils.kt:23)
	at com.tang.intellij.lua.ext.UtilsKt.recursionGuard$default(utils.kt:22)
	at com.tang.intellij.lua.ty.ExpressionsKt.infer(Expressions.kt:355)
	at com.tang.intellij.lua.ty.ExpressionsKt.inferExprInner(Expressions.kt:109)
	at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:61)
	at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:37)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:27)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:24)
	at com.tang.intellij.lua.search.RecursionGuardsKt.withRecursionGuard(RecursionGuards.kt:52)
	at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:26)
	at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:32)
	at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:163)
	at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:33)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:55)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:34)
	at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:60)
	at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:55)
	at com.tang.intellij.lua.psi.LuaTypeGuessable.guessType(LuaTypeGuessable.java:31)
	at com.tang.intellij.lua.ty.ExpressionsKt.inferExpr(Expressions.kt:56)
	at com.tang.intellij.lua.ty.DeclarationsKt.inferInner(Declarations.kt:37)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:27)
	at com.tang.intellij.lua.ty.LuaTypeInfer$inferType$1.invoke(LuaTypeInfer.kt:24)
	at com.tang.intellij.lua.search.RecursionGuardsKt.withRecursionGuard(RecursionGuards.kt:52)
	at com.tang.intellij.lua.ty.LuaTypeInfer.inferType(LuaTypeInfer.kt:26)
	at com.tang.intellij.lua.ext.ILuaTypeInfer$Companion.infer(ILuaTypeInfer.kt:32)
	at com.tang.intellij.lua.search.SearchContext.inferAndCache(SearchContext.kt:163)
	at com.tang.intellij.lua.search.SearchContext.access$inferAndCache(SearchContext.kt:33)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:55)
	at com.tang.intellij.lua.search.SearchContext$Companion$infer$2.invoke(SearchContext.kt:34)
	at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:60)
	at com.tang.intellij.lua.search.SearchContext$Companion.infer(SearchContext.kt:55)
	at com.tang.intellij.lua.stubs.LuaClassMethodType$createStub$1.invoke(LuaClassMethodDefStatStub.kt:47)
	at com.tang.intellij.lua.stubs.LuaClassMethodType$createStub$1.invoke(LuaClassMethodDefStatStub.kt:34)
	at com.tang.intellij.lua.search.SearchContext$Companion$withDumb$1.invoke(SearchContext.kt:93)
	at com.tang.intellij.lua.search.SearchContext$Companion$withDumb$1.invoke(SearchContext.kt:34)
	at com.tang.intellij.lua.search.SearchContext$Companion.with(SearchContext.kt:68)
	at com.tang.intellij.lua.search.SearchContext$Companion.withDumb(SearchContext.kt:90)
	at com.tang.intellij.lua.search.SearchContext$Companion.withDumb(SearchContext.kt:86)
	at com.tang.intellij.lua.stubs.LuaClassMethodType.createStub(LuaClassMethodDefStatStub.kt:46)
	at com.tang.intellij.lua.stubs.LuaClassMethodType.createStub(LuaClassMethodDefStatStub.kt:34)
	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.createStub(DefaultStubBuilder.java:85)
	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.visitNode(DefaultStubBuilder.java:60)
	at com.intellij.psi.stubs.DefaultStubBuilder$StubBuildingWalkingVisitor.buildStubTree(DefaultStubBuilder.java:55)
	at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTreeFor(DefaultStubBuilder.java:33)
	at com.intellij.psi.stubs.DefaultStubBuilder.buildStubTree(DefaultStubBuilder.java:22)
	at com.intellij.psi.stubs.StubTreeBuilder.lambda$buildStubTree$1(StubTreeBuilder.java:143)
	at com.intellij.psi.stubs.StubTreeBuilder.handleStubBuilderException(StubTreeBuilder.java:98)
	at com.intellij.psi.stubs.StubTreeBuilder.buildStubTree(StubTreeBuilder.java:143)
	at com.intellij.psi.stubs.StubUpdatingIndex$1.computeValue(StubUpdatingIndex.java:179)
	at com.intellij.psi.stubs.StubUpdatingIndex$1.computeValue(StubUpdatingIndex.java:156)
	at com.intellij.psi.stubs.StubUpdatingIndex$1.computeValue(StubUpdatingIndex.java:123)
	at com.intellij.util.indexing.SingleEntryIndexer.map(SingleEntryIndexer.java:30)
	at com.intellij.util.indexing.SingleEntryIndexer.map(SingleEntryIndexer.java:19)
	at com.intellij.util.indexing.impl.MapReduceIndex.mapByIndexer(MapReduceIndex.java:306)
	at com.intellij.util.indexing.impl.MapReduceIndex.mapInput(MapReduceIndex.java:297)
	at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:182)
	at com.intellij.util.indexing.impl.storage.VfsAwareMapReduceIndex.mapInput(VfsAwareMapReduceIndex.java:47)
	at com.intellij.util.indexing.impl.MapReduceIndex.mapInputAndPrepareUpdate(MapReduceIndex.java:244)
	at com.intellij.psi.stubs.StubUpdatingIndexStorage.mapInputAndPrepareUpdate(StubUpdatingIndexStorage.java:60)
	at com.intellij.psi.stubs.StubUpdatingIndexStorage.mapInputAndPrepareUpdate(StubUpdatingIndexStorage.java:19)
	at com.intellij.util.indexing.FileBasedIndexImpl.updateSingleIndex(FileBasedIndexImpl.java:1551)
	at com.intellij.util.indexing.FileBasedIndexImpl.lambda$doIndexFileContent$27(FileBasedIndexImpl.java:1422)
	at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.freezeFileTypeTemporarilyIn(FileTypeManagerImpl.java:627)
	at com.intellij.util.indexing.FileBasedIndexImpl.doIndexFileContent(FileBasedIndexImpl.java:1371)
	at com.intellij.util.indexing.FileBasedIndexImpl.indexFileContent(FileBasedIndexImpl.java:1325)
	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexOneFileOfJob$5(IndexUpdateRunner.java:267)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:486)
	at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1084)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:75)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:158)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:115)
	at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:57)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:188)
	at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$12(CoreProgressManager.java:624)
	at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:698)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:646)
	at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:623)
	at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
	at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:175)
	at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:57)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:112)
	at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:75)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.executeSynchronously(NonBlockingReadActionImpl.java:421)
	at com.intellij.openapi.application.impl.NonBlockingReadActionImpl.executeSynchronously(NonBlockingReadActionImpl.java:186)
	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexOneFileOfJob(IndexUpdateRunner.java:270)
	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$indexJobsFairly$4(IndexUpdateRunner.java:210)
	at com.intellij.openapi.progress.impl.ProgressSuspender.executeNonSuspendableSection(ProgressSuspender.java:83)
	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.indexJobsFairly(IndexUpdateRunner.java:213)
	at com.intellij.util.indexing.contentQueue.IndexUpdateRunner.lambda$doIndexFiles$3(IndexUpdateRunner.java:147)
	at com.intellij.util.concurrency.BoundedTaskExecutor.doRun(BoundedTaskExecutor.java:246)
	at com.intellij.util.concurrency.BoundedTaskExecutor.access$200(BoundedTaskExecutor.java:32)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.execute(BoundedTaskExecutor.java:225)
	at com.intellij.util.ConcurrencyUtil.runUnderThreadName(ConcurrencyUtil.java:213)
	at com.intellij.util.concurrency.BoundedTaskExecutor$1.run(BoundedTaskExecutor.java:214)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
	at java.base/java.lang.Thread.run(Thread.java:829)

What were you expecting to happen?

I don't expect the test files to parse cleanly (I expect squiggles), especially since Luau syntax isn't supported, but it shouldn't crash when CLion is trying to index the files.

Any logs, error output, etc?

See above.

Any other comments?

As side note, the luacheck option in the plugin settings should probably be replaced by selene (which is built using full-moon).

matthargett avatar Jan 18 '22 02:01 matthargett