fix rtti sizeof for varargs in global scope (#13125) [backport]

This commit is contained in:
Jasper Jenkins 2020-01-13 01:17:22 -08:00 • committed by Andreas Rumpf
commit bf2e052e6d
2 changed files with 11 additions and 2 deletions

View file

@ -479,7 +479,7 @@ type
nfExecuteOnReload # A top-level statement that will be executed during reloads nfExecuteOnReload # A top-level statement that will be executed during reloads
TNodeFlags* = set[TNodeFlag] TNodeFlags* = set[TNodeFlag]
TTypeFlag* = enum # keep below 32 for efficiency reasons (now: ~39) TTypeFlag* = enum # keep below 32 for efficiency reasons (now: ~40)
tfVarargs, # procedure has C styled varargs tfVarargs, # procedure has C styled varargs
# tyArray type represeting a varargs list # tyArray type represeting a varargs list
tfNoSideEffect, # procedure type does not allow side effects tfNoSideEffect, # procedure type does not allow side effects
@ -539,6 +539,7 @@ type
tfCheckedForDestructor # type was checked for having a destructor. tfCheckedForDestructor # type was checked for having a destructor.
# If it has one, t.destructor is not nil. # If it has one, t.destructor is not nil.
tfAcyclic # object type was annotated as .acyclic tfAcyclic # object type was annotated as .acyclic
tfIncompleteStruct # treat this type as if it had sizeof(pointer)
TTypeFlags* = set[TTypeFlag] TTypeFlags* = set[TTypeFlag]
@ -580,7 +581,6 @@ type
const const
routineKinds* = {skProc, skFunc, skMethod, skIterator, routineKinds* = {skProc, skFunc, skMethod, skIterator,
skConverter, skMacro, skTemplate} skConverter, skMacro, skTemplate}
tfIncompleteStruct* = tfVarargs
tfUnion* = tfNoSideEffect tfUnion* = tfNoSideEffect
tfGcSafe* = tfThread tfGcSafe* = tfThread
tfObjHasKids* = tfEnumHasHoles tfObjHasKids* = tfEnumHasHoles

View file

@ -5,6 +5,7 @@ TEMP=C:\Programs\xyz\bin
8 5 0 0 8 5 0 0
pre test a:test b:1 c:2 haha:3 pre test a:test b:1 c:2 haha:3
assignment test a:test b:1 c:2 haha:3 assignment test a:test b:1 c:2 haha:3
abc123
''' '''
""" """
@ -207,3 +208,11 @@ when false:
var var
a, b: Foo a, b: Foo
a = b a = b
block tgeneric_assign_varargs:
template fatal(msgs: varargs[string]) =
for msg in msgs:
stdout.write(msg)
stdout.write('\n')
fatal "abc", "123"