mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 22:33:49 +00:00
Improve error message when instantiating generics with object constructor (#20358)
* Improve error message when instantiating generics with object constructor
* follow suggestion
* Update compiler/semobjconstr.nim
Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
* Update tests/errmsgs/t19882_2.nim
Co-authored-by: Clay Sweetser <Varriount@users.noreply.github.com>
(cherry picked from commit 2afce84616)
This commit is contained in:
@@ -392,8 +392,12 @@ proc semObjConstr(c: PContext, n: PNode, flags: TExprFlags): PNode =
|
||||
# multiple times as long as they don't have closures.
|
||||
result.typ.flags.incl tfHasOwned
|
||||
if t.kind != tyObject:
|
||||
return localErrorNode(c, result,
|
||||
"object constructor needs an object type".dup(addDeclaredLoc(c.config, t)))
|
||||
return localErrorNode(c, result, if t.kind != tyGenericBody:
|
||||
"object constructor needs an object type".dup(addDeclaredLoc(c.config, t))
|
||||
else: "cannot instantiate: '" &
|
||||
typeToString(t, preferDesc) &
|
||||
"'; the object's generic parameters cannot be inferred and must be explicitly given"
|
||||
)
|
||||
|
||||
# Check if the object is fully initialized by recursively testing each
|
||||
# field (if this is a case object, initialized fields in two different
|
||||
|
||||
5
tests/errmsgs/t19882_2.nim
Normal file
5
tests/errmsgs/t19882_2.nim
Normal file
@@ -0,0 +1,5 @@
|
||||
discard """
|
||||
errormsg: "cannot instantiate: 'A[T]'; the object's generic parameters cannot be inferred and must be explicitly given"
|
||||
"""
|
||||
type A[T] = object
|
||||
var a = A()
|
||||
Reference in New Issue
Block a user