diff options
Diffstat (limited to 'closures/compiler/ncgutil.pas')
| -rw-r--r-- | closures/compiler/ncgutil.pas | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/closures/compiler/ncgutil.pas b/closures/compiler/ncgutil.pas index 093708bf55..be668fd0cb 100644 --- a/closures/compiler/ncgutil.pas +++ b/closures/compiler/ncgutil.pas @@ -3075,9 +3075,16 @@ implementation for i:=0 to st.DefList.Count-1 do begin def:=tdef(st.DefList[i]); - { if def can contain nested types then handle it symtable } - if def.typ in [objectdef,recorddef] then - gen_intf_wrappers(list,tabstractrecorddef(def).symtable,true); + { if def can contain nested types then handle its symtable } + case def.typ of + objectdef,recorddef: + gen_intf_wrappers(list,tabstractrecorddef(def).symtable,true); + procdef: + // check for local classes; currently, we only use them for closures + // TODO: this can slow codegen down dramatically?! + if assigned(tprocdef(def).localst) then + gen_intf_wrappers(list,tprocdef(def).localst,true); + end; if is_class(def) then gen_intf_wrapper(list,tobjectdef(def)); end; |
