fix regression in align (#12680)
* fix regression in align * add test typesym without type
This commit is contained in:
parent
5278cf80eb
commit
03fa9a9041
4 changed files with 20 additions and 5 deletions
|
|
@ -550,7 +550,7 @@ proc genRecordFieldsAux(m: BModule, n: PNode,
|
|||
let sname = mangleRecFieldName(m, field)
|
||||
fillLoc(field.loc, locField, n, sname, OnUnknown)
|
||||
if field.alignment > 0:
|
||||
result.addf "alignas($1) ", [rope(field.alignment)]
|
||||
result.addf "NIM_ALIGN($1) ", [rope(field.alignment)]
|
||||
# for importcpp'ed objects, we only need to set field.loc, but don't
|
||||
# have to recurse via 'getTypeDescAux'. And not doing so prevents problems
|
||||
# with heavily templatized C++ code:
|
||||
|
|
|
|||
|
|
@ -1766,8 +1766,11 @@ proc semTypeNode(c: PContext, n: PNode, prev: PType): PType =
|
|||
onUse(n.info, n.sym)
|
||||
else:
|
||||
if s.kind != skError:
|
||||
localError(c.config, n.info, "type expected, but got symbol '$1' of kind '$2'" %
|
||||
[s.name.s, substr($s.kind, 2)])
|
||||
if s.typ == nil:
|
||||
localError(c.config, n.info, "type expected, but symbol '$1' has no type." % [s.name.s])
|
||||
else:
|
||||
localError(c.config, n.info, "type expected, but got symbol '$1' of kind '$2'" %
|
||||
[s.name.s, substr($s.kind, 2)])
|
||||
result = newOrPrevType(tyError, prev, c)
|
||||
of nkObjectTy: result = semObjectNode(c, n, prev, isInheritable=false)
|
||||
of nkTupleTy: result = semTuple(c, n, prev)
|
||||
|
|
|
|||
14
tests/macros/tinvalidtypesym.nim
Normal file
14
tests/macros/tinvalidtypesym.nim
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
discard """
|
||||
errormsg: "type expected, but symbol 'MyType' has no type."
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
macro foobar(name) =
|
||||
let sym = genSym(nskType, "MyType")
|
||||
|
||||
result = quote do:
|
||||
type
|
||||
`name` = `sym`
|
||||
|
||||
foobar(MyAlias)
|
||||
|
|
@ -6,8 +6,6 @@ output: "align ok"
|
|||
|
||||
# This is for Azure. The keyword ``alignof`` only exists in ``c++11``
|
||||
# and newer. On Azure gcc does not default to c++11 yet.
|
||||
when defined(cpp) and not defined(windows):
|
||||
{.passC: "-std=c++11".}
|
||||
|
||||
import globalalignas
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue