mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 00:19:19 +02:00
* don't generate typed constant initializers for interfaces (since they
can't have class constructors) git-svn-id: branches/jvmbackend@18478 -
This commit is contained in:
parent
5b915178fa
commit
2964ea3e9b
@ -1387,7 +1387,8 @@ implementation
|
|||||||
if is_javaclass(current_structdef) then
|
if is_javaclass(current_structdef) then
|
||||||
maybe_add_public_default_java_constructor(tobjectdef(current_structdef));
|
maybe_add_public_default_java_constructor(tobjectdef(current_structdef));
|
||||||
{ need method to hold the initialization code for typed constants? }
|
{ need method to hold the initialization code for typed constants? }
|
||||||
if target_info.system in systems_typed_constants_node_init then
|
if (target_info.system in systems_typed_constants_node_init) and
|
||||||
|
not is_any_interface_kind(current_structdef) then
|
||||||
add_typedconst_init_routine(current_structdef);
|
add_typedconst_init_routine(current_structdef);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -838,6 +838,7 @@ interface
|
|||||||
{ should be in the types unit, but the types unit uses the node stuff :( }
|
{ should be in the types unit, but the types unit uses the node stuff :( }
|
||||||
function is_interfacecom(def: tdef): boolean;
|
function is_interfacecom(def: tdef): boolean;
|
||||||
function is_interfacecom_or_dispinterface(def: tdef): boolean;
|
function is_interfacecom_or_dispinterface(def: tdef): boolean;
|
||||||
|
function is_any_interface_kind(def: tdef): boolean;
|
||||||
function is_interfacecorba(def: tdef): boolean;
|
function is_interfacecorba(def: tdef): boolean;
|
||||||
function is_interface(def: tdef): boolean;
|
function is_interface(def: tdef): boolean;
|
||||||
function is_dispinterface(def: tdef): boolean;
|
function is_dispinterface(def: tdef): boolean;
|
||||||
@ -5907,6 +5908,15 @@ implementation
|
|||||||
(tobjectdef(def).objecttype in [odt_interfacecom,odt_dispinterface]);
|
(tobjectdef(def).objecttype in [odt_interfacecom,odt_dispinterface]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function is_any_interface_kind(def: tdef): boolean;
|
||||||
|
begin
|
||||||
|
result:=
|
||||||
|
assigned(def) and
|
||||||
|
(def.typ=objectdef) and
|
||||||
|
((tobjectdef(def).objecttype in [odt_interfacecom,odt_dispinterface,odt_interfacecorba,odt_interfacejava,odt_objcprotocol]) or
|
||||||
|
is_objccategory(def));
|
||||||
|
end;
|
||||||
|
|
||||||
function is_interfacecorba(def: tdef): boolean;
|
function is_interfacecorba(def: tdef): boolean;
|
||||||
begin
|
begin
|
||||||
is_interfacecorba:=
|
is_interfacecorba:=
|
||||||
|
Loading…
Reference in New Issue
Block a user