Page MenuHomePhabricator

eolian generates wrong function name in case of @empty implementation in derived class.
Closed, InvalidPublic

Description

03:14:42 IST) _ami_: A { .. methods { nobodyelseshouldcallme {} }
(03:15:22 IST) _ami_: import a;
(03:15:22 IST) _ami_: B { implements { @empty A.nobodyelseshouldcallme; } }
(03:15:58 IST) _ami_: eolian should generate a_nobodyelseshouldcallme() in b.eo.c
(03:16:22 IST) _ami_: but instead it generates A_nobodyelseshouldcallme()
(03:20:44 IST) _ami_: probably a class name with single char is not handled well? ;)

Please check following sample.

https://git.enlightenment.org/devs/ami/smartobjects.git/tree/eo/empty/a.eo
https://git.enlightenment.org/devs/ami/smartobjects.git/tree/eo/empty/b.eo

eolian error:
Scanning dependencies of target virtual_ex
[ 63%] Building C object CMakeFiles/virtual_ex.dir/b.c.o
In file included from /home/ami/EFL/devs/ami/smartobjects/eo/empty/b.c:2:0:
/home/ami/EFL/devs/ami/smartobjects/eo/empty/b.eo.c:12:26: error: ‘A_nobodyelseshouldcallme’ undeclared here (not in a function)

EO_OP_FUNC_OVERRIDE(A_nobodyelseshouldcallme, __eolian_b_a_nobodyelseshouldcallme),
tasn raised the priority of this task from Trivial to High.Mar 3 2016, 7:46 AM

@q66, this needs fixing.

q66 closed this task as Invalid.Mar 7 2016, 7:14 AM

eolian was not incorrect here, but it was not checking a bad case where eo_prefix or legacy_prefix contains characters that are not allowed - that is now fixed in bf2c0c340526375217796df18a52f4c08e2344d4. Also, you're using @empty wrong. @empty is supposed to generate an automatic empty implementation of a method, while you're actually implementing it separately (and under a wrong name).

if you have any further questions, feel free to ask here or on irc.