fix #19882 Improve error message when instantiating generics that lac… (#20356)

* fix #19882 Improve error message when instantiating generics that lack a type

* Update tests/errmsgs/t19882.nim

Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
This commit is contained in:
Bung
2022-09-20 06:31:40 +08:00
committed by GitHub
parent c4ba4f06f8
commit a302b26e0e
2 changed files with 12 additions and 1 deletions

View File

@@ -54,7 +54,8 @@ iterator instantiateGenericParamList(c: PContext, n: PNode, pt: TIdTable): PSym
# later by semAsgn in return type inference scenario
t = q.typ
else:
localError(c.config, a.info, errCannotInstantiateX % s.name.s)
if q.typ.kind != tyCompositeTypeClass:
localError(c.config, a.info, errCannotInstantiateX % s.name.s)
t = errorType(c)
elif t.kind in {tyGenericParam, tyConcept}:
localError(c.config, a.info, errCannotInstantiateX % q.name.s)

10
tests/errmsgs/t19882.nim Normal file
View File

@@ -0,0 +1,10 @@
discard """
errormsg: "cannot instantiate 'A[T, P]' inside of type definition: 'init'; Maybe generic arguments are missing?"
"""
type A[T,P] = object
b:T
c:P
proc init(): ref A =
new(result)
var a = init()