Ticket #141 (closed task: fixed)

Opened 5 months ago

Last modified 5 months ago

Improve compiler support for role files

Reported by: stephan Owned by: stephan
Priority: major Milestone: OTDT_1.2.1
Component: compiler Version: 1.2.0
Keywords: Cc:

Description

This ticket is an umbrella for several recent changes relating to the processing of role files, copy inheritance and local types.

  • Initially we saw exceptions during incremental compilation of role files of the CompletionAdaptor.
  • Similar problems could then be reproduced as 1.5.12-otjld-role-file-compile-order-2 and 1.5.12-otjld-role-file-compile-order-3
  • These tests were initially fixed in r18813, which touched sensitive methods:
    • Dependencies.lateRolesCatchup
    • StateMemento.handleRequest
    • Lifting.createLiftToMethod (deferring generation of statements)

These changes in concert caused various regressions throughout the jacks suite mainly due to changed compilation order, which were to be fixed by these patches:

  • r18814 fixed some regressions mainly regarding the conflict between generated and parsed statements.
  • r18818 fixed a similar conflict not at the level of statements, but methods.
  • r18819 finally installed topological sorting for member types, which ensures that super types are always translated before their sub types. Obviously this had been planned long time ago, but wasn't ever used (created in r15219 - in disabled state). The library method that was used instead is not safe for partial orders.
  • r18824 and r18827 added support to directly invoke certain phases that normally enter via the compilation unit for any kind of late role: purely copied, role files, role local types.
  • r18828 disabled the previous patch for local types, because this caused a build-failure in role CalloutCompletionProposal (analyseCode of local type).
  • Finally, r18826 marks the observation that the CUD of role files skips many states - may need to always set this during RoleModel.setState?

Change History

Changed 5 months ago by stephan

* r18830 fixes further regressions where a CUD could skip STATE_LENV_CONNECT_TYPE_HIERARCHY -> missing superclass.

Changed 5 months ago by stephan

  • status changed from new to closed
  • resolution set to fixed

All regressions caused by changes in this ticket have been fixed. Compilation order is more robust now (passing more tests).

Note: See TracTickets for help on using tickets.