diff options
| author | blaise <blaise@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-02-01 19:21:23 +0000 |
|---|---|---|
| committer | blaise <blaise@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2012-02-01 19:21:23 +0000 |
| commit | 9993f7ecb45c45fad5fb33d92db5a26eede1a3f1 (patch) | |
| tree | bc0fd7d7efc0b322da0b94627d81cfc847395a54 /closures/compiler/defcmp.pas | |
| parent | 377f14fd544f12a50c90e9a193ac782a601e83cd (diff) | |
| download | fpc-9993f7ecb45c45fad5fb33d92db5a26eede1a3f1.tar.gz | |
+ defcmp: structural equivalence for COM interfacesblaise
~ pdecobj, pdecsub: parsing mode for routines: normal, class method, nameless routine, method reference
= pdecsub: factored out parse_proc_parameter_dec(); code simplifications
+ symdef: tprocdef.add_to_procsym()
+ ptype, tokens: new UDT -- method reference
git-svn-id: http://svn.freepascal.org/svn/fpc/branches/blaise@20212 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'closures/compiler/defcmp.pas')
| -rw-r--r-- | closures/compiler/defcmp.pas | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/closures/compiler/defcmp.pas b/closures/compiler/defcmp.pas index 25c4ca4f11..9f8e98c03f 100644 --- a/closures/compiler/defcmp.pas +++ b/closures/compiler/defcmp.pas @@ -145,7 +145,7 @@ implementation uses verbose,systems,constexp, symtable,symsym, - defutil,symutil; + defutil,symutil,pnameless; function compare_defs_ext(def_from,def_to : tdef; @@ -1390,6 +1390,15 @@ implementation doconv:=tc_variant_2_interface; eq:=te_convert_l2; end + { interface coercion } + else if (def_from.typ=objectdef) and + (tobjectdef(def_from).objecttype=odt_interfacecom) and + (tobjectdef(def_to).objecttype=odt_interfacecom) and + are_compatible_interfaces(tobjectdef(def_to),tobjectdef(def_from)) then + begin + doconv:=tc_equal; + eq:=te_convert_l1; + end { ugly, but delphi allows it } else if (def_from.typ in [orddef,enumdef]) and (m_delphi in current_settings.modeswitches) and |
