IntelliJ-Luanalysis
IntelliJ-Luanalysis copied to clipboard
A shape inheriting from a tuple causes errors
Environment
Name | Version |
---|---|
IDEA version | IntelliJ IDEA 2021.2.3 |
Luanalysis version | 1.3.0 |
OS | Windows 10 2004 build 19041.928 x86_64 |
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?
-
--- @shape Shape : {false, string}
- StackOverflowError
What happens?
StackOverflowError
What were you expecting to happen?
No error?
Any logs, error output, etc?
java.lang.StackOverflowError
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getName(LuaDocPsiImplUtil.kt:183)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getName(LuaDocTagClassImpl.java:88)
at com.tang.intellij.lua.ty.TyPsiDocClass.<init>(TyClass.kt:401)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:220)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getType(LuaDocTagClassImpl.java:64)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.guessOwner(LuaScopedTypeTree.kt:160)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findDumbOwner(LuaScopedTypeTree.kt:191)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findOwner(LuaScopedTypeTree.kt:218)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findName(LuaScopedTypeTree.kt:134)
at com.tang.intellij.lua.psi.ScopedTypeTree.findName(LuaScopedTypeTree.kt:321)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:630)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:629)
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:90)
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.ty.TyClassKt.getDocTableImplicitParams(TyClass.kt:629)
at com.tang.intellij.lua.ty.TyClassKt.access$getDocTableImplicitParams(TyClass.kt:1)
at com.tang.intellij.lua.ty.TyDocTable.<init>(TyClass.kt:644)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:403)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTableTyImpl.getType(LuaDocTableTyImpl.java:40)
at com.tang.intellij.lua.ty.TyPsiDocClass.<init>(TyClass.kt:404)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:220)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getType(LuaDocTagClassImpl.java:64)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.guessOwner(LuaScopedTypeTree.kt:160)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findDumbOwner(LuaScopedTypeTree.kt:191)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findOwner(LuaScopedTypeTree.kt:218)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findName(LuaScopedTypeTree.kt:134)
at com.tang.intellij.lua.psi.ScopedTypeTree.findName(LuaScopedTypeTree.kt:321)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:630)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:629)
--- snipped because this is repeated way too many times ---
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:90)
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.ty.TyClassKt.getDocTableImplicitParams(TyClass.kt:629)
at com.tang.intellij.lua.ty.TyClassKt.access$getDocTableImplicitParams(TyClass.kt:1)
at com.tang.intellij.lua.ty.TyDocTable.<init>(TyClass.kt:644)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:403)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTableTyImpl.getType(LuaDocTableTyImpl.java:40)
at com.tang.intellij.lua.ty.TyPsiDocClass.<init>(TyClass.kt:404)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:220)
java.lang.StackOverflowError
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getName(LuaDocTagClassImpl.java:88)
at com.tang.intellij.lua.ty.TyPsiDocClass.<init>(TyClass.kt:401)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:220)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getType(LuaDocTagClassImpl.java:64)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.guessOwner(LuaScopedTypeTree.kt:160)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findDumbOwner(LuaScopedTypeTree.kt:191)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findOwner(LuaScopedTypeTree.kt:218)
at com.tang.intellij.lua.psi.ScopedTypeTreeScope.findName(LuaScopedTypeTree.kt:134)
at com.tang.intellij.lua.psi.ScopedTypeTree.findName(LuaScopedTypeTree.kt:321)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:630)
at com.tang.intellij.lua.ty.TyClassKt$getDocTableImplicitParams$1$scopedType$1.invoke(TyClass.kt:629)
--- snipped again ---
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:90)
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.ty.TyClassKt.getDocTableImplicitParams(TyClass.kt:629)
at com.tang.intellij.lua.ty.TyClassKt.access$getDocTableImplicitParams(TyClass.kt:1)
at com.tang.intellij.lua.ty.TyDocTable.<init>(TyClass.kt:644)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:403)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTableTyImpl.getType(LuaDocTableTyImpl.java:40)
at com.tang.intellij.lua.ty.TyPsiDocClass.<init>(TyClass.kt:404)
at com.tang.intellij.lua.comment.psi.LuaDocPsiImplUtilKt.getType(LuaDocPsiImplUtil.kt:220)
at com.tang.intellij.lua.comment.psi.impl.LuaDocTagClassImpl.getType(LuaDocTagClassImpl.java:64)
Any other comments?
an alias can be used as a workaround without issue