Skip to content

Latest commit

 

History

History
63 lines (60 loc) · 3.18 KB

TODO.md

File metadata and controls

63 lines (60 loc) · 3.18 KB

TODO

  • Directly embed Xcore into metamodel definitions
  • Factorize adapters creation in dedicated factories
  • Externalize all AST-completion operations in a IDerivedStateComputer post-processor
  • In-the-large
    • Metamodels attributes and operations
    • Modeltypes attributes and operations
  • Aspects weaving
    • Weave aspects into a metamodel
    • Allow definition of generic aspects (on modeltypes)
    • Generic extraction of metamodel fragments from aspect definition
  • Subtyping Algorithm
    • Take aspects signatures into account
    • Ensure termination (check for cycles)
  • Manage subpackages (implicit flattening)
    • Preserve the subpackages hierarchy in generated code
  • Infer root type of modeltypes and automatically compute root elements list whenever needed (eg. transformation invokation)
  • Allow inheritance between metamodels (partially)
  • Multiple inheritance/subtyping semantics? e.g. w/o aspects, w/o static sem, partial, etc.
  • Allow multiple inheritance of metamodels
  • Allow the import of multiple Ecore files in a metamodel declaration
  • Allow the definition of model types independently of any metamodel
  • Register to the EMF notification system (eg. 2-ways list adapters)
  • Allow arbitrary return types for transformations
  • Create models from scratch using the generated factories, avoiding families mixing
  • Support metamodels making use of external references
  • Allow import of Ecore for modeltype definition
  • Automatically merge different Ecore inherited and/or imported
  • Write static semantic constraints on the abstract syntax
  • Manage annotations on Ecore file to specify which elements need to be exposed in the interface
  • Expose methods signatures in the interface
  • Define inheritance / aspects weaving, etc. in terms of metamodels merging (partially)
  • Define independently and use modeltypes algebra for any kind of operators
  • Support adaptation mechanisms between model types (at least renaming clauses)
  • Manage visibilities, both when extracting interfaces and aspects' semantics
  • Allow transtyping @runtime between interfaces (ie. extensions/viewpoints) (to be checked)
  • Separate serialization of extensions via specialized EMF Resource

TESTS

  • Aspects import
  • Aspects' partial metamodels inference
  • Aspects' dynamic biding and overloading
  • Subtyping algorithm
  • Referenced packages
  • Subpackages
  • Merge
  • Inheritance
  • Multiple inheritance

TOWARDS STANDALONE

  • MelangeResource
  • MelangeMetadata?
  • ModelTypingSpace manager within Eclipse project or workspace

PERFORMANCE

  • Disable Xtext services (indexing, scoping, etc.) on EPackages and their subtree (which constitutes the biggest part of the overall AST)
  • Alternatively, remove ModelingElement from the AST and use an external hash table to keep track of the associated EPackages
  • Keep track of the generated artifacts (Melange/EMF) and regenerate them only when necessary
  • exactType should be immutable reference to the EPackages defining the metamodel they are extracted from. No need to copy anything