eolian: deferred parsing of inherits + better static checks
authorDaniel Kolesa <d.kolesa@osg.samsung.com>
Tue, 30 Jan 2018 16:03:37 +0000 (17:03 +0100)
committerJiyoun Park <jy0703.park@samsung.com>
Tue, 3 Apr 2018 13:23:35 +0000 (22:23 +0900)
commit8ca5c4c4d4777f4178cf10744516bfc6b1d49365
tree401e82aa9a94d5726a668a4cb144e6d0969c97d9
parent9b15db5196fe4226737e0e58c768a50f6d8e2fb3
eolian: deferred parsing of inherits + better static checks

This change finally introduces deferred parsing of inherits to
Eolian, after a long time and many iterations. That means instead
of parsing inherits directly as part of the main file's parse pass,
they're pushed into a queue and parsed later. The validation engine
was modified to properly fill in the remaining info afterwards.

This may introduce breakages but I haven't noticed any. It also
properly unlocks cyclic dependency support in Eolian.

Additionally, this also introduces checks for duplicates in class
inherits (class Foo(Bar, Bar) is no longer possible) and it adds
stricter name checks, so you can no longer have a class Foo.Bar
and refer to it as Foo_Bar in implements. This was actually never
meant to be supported, but the check was previously broken.

@feature
src/lib/elementary/efl_ui_legacy.eo
src/lib/elementary/efl_ui_list.eo
src/lib/elementary/elm_genlist.eo
src/lib/eolian/database_validate.c
src/lib/eolian/eo_parser.c
src/lib/evas/canvas/efl_input_key.eo