parent
b6360c5d5f
commit
5c7ae14074
3 changed files with 26 additions and 1 deletions
|
|
@ -44,7 +44,9 @@ proc locateFieldInInitExpr(field: PSym, initExpr: PNode): PNode =
|
||||||
let fieldId = field.name.id
|
let fieldId = field.name.id
|
||||||
for i in 1 .. <initExpr.len:
|
for i in 1 .. <initExpr.len:
|
||||||
let assignment = initExpr[i]
|
let assignment = initExpr[i]
|
||||||
internalAssert assignment.kind == nkExprColonExpr
|
if assignment.kind != nkExprColonExpr:
|
||||||
|
localError(initExpr.info, "incorrect object construction syntax")
|
||||||
|
continue
|
||||||
|
|
||||||
if fieldId == considerQuotedIdent(assignment[0]).id:
|
if fieldId == considerQuotedIdent(assignment[0]).id:
|
||||||
return assignment
|
return assignment
|
||||||
|
|
@ -278,6 +280,9 @@ proc semObjConstr(c: PContext, n: PNode, flags: TExprFlags): PNode =
|
||||||
for i in 1.. <result.len:
|
for i in 1.. <result.len:
|
||||||
let field = result[i]
|
let field = result[i]
|
||||||
if nfSem notin field.flags:
|
if nfSem notin field.flags:
|
||||||
|
if field.kind != nkExprColonExpr:
|
||||||
|
localError(n.info, "incorrect object construction syntax")
|
||||||
|
continue
|
||||||
let id = considerQuotedIdent(field[0])
|
let id = considerQuotedIdent(field[0])
|
||||||
# This node was not processed. There are two possible reasons:
|
# This node was not processed. There are two possible reasons:
|
||||||
# 1) It was shadowed by a field with the same name on the left
|
# 1) It was shadowed by a field with the same name on the left
|
||||||
|
|
|
||||||
10
tests/constructors/t5965_1.nim
Normal file
10
tests/constructors/t5965_1.nim
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
discard """
|
||||||
|
file: "t5965_1.nim"
|
||||||
|
line: 10
|
||||||
|
errormsg: "incorrect object construction syntax"
|
||||||
|
"""
|
||||||
|
|
||||||
|
type Foo = object
|
||||||
|
a, b, c: int
|
||||||
|
|
||||||
|
discard Foo(a: 1, 2)
|
||||||
10
tests/constructors/t5965_2.nim
Normal file
10
tests/constructors/t5965_2.nim
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
discard """
|
||||||
|
file: "t5965_2.nim"
|
||||||
|
line: 10
|
||||||
|
errormsg: "incorrect object construction syntax"
|
||||||
|
"""
|
||||||
|
|
||||||
|
type Foo = object
|
||||||
|
a: int
|
||||||
|
|
||||||
|
discard Foo(a: 1, 2)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue