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

A shape inheriting from a tuple causes errors

Open LoganDark opened this issue 2 years ago • 0 comments

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

image

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. --- @shape Shape : {false, string}
  2. 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

LoganDark avatar May 03 '22 18:05 LoganDark