Changeset be567e9 for src/AST/

May 15, 2019, 10:15:52 AM (3 years ago)
Thierry Delisle <tdelisle@…>
arm-eh, cleanup-dtors, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr
54db6ba, 69bafd2
6d51bd7 (diff), 62315a0 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.

Merge branch 'master' of

1 edited


  • src/AST/

    r6d51bd7 rbe567e9  
    33## Pointer Types ##
    44* raw pointer `T*` is used for construction, but not storage
    5 * strong pointer `ast::ptr<T>` is used for an ownership relationship
    6 * weak pointer `ast::readonly<T>` is used for an observation relationship
     5* `ast::ptr_base<T,R>` is a pointer to AST node `T` with reference type `R`
     6  * specialization: strong pointer `ast::ptr<T>` is used for an ownership relationship
     7  * specialization: weak pointer `ast::readonly<T>` is used for an observation relationship
     8  * added `ast::ptr_base<T,R>::as<S>()` with same semantics as `dynamic_cast<S*>(p)`
    810## Visitors ##
    6062* Strong justification required for private fields
    6163  * No `get_` prefix on getters (including for generated fields)
     64    * exception is `DeclWithType::get_type()`
    6265* Notable changes:
    6366  * for concision and consistency with subclasses:
    112115* Still a `std::list` for children, rather than `std::vector`
    113116  * allows more-efficient splicing for purposes of later code generation
     119* `forall` field split off into `ParameterizedType` subclass
     120  * any type that needs it can inherit from `ParameterizedType`
     121* `get_qualifiers()` replaced with accessor `qualifiers()` and mutator `set_qualifiers()`
     122  * `get_CV()` replaced with `is_CV()` variants
     123* A number of features only supported on aggregates pushed down to `ReferenceToType`:
     124  * `attributes`: per docs [1] GCC only supports type attributes on aggregates and typedefs
     125    * suggest adding a `TypeWithAttributes` wrapper type if this proves insufficient
     126  * `getAggr()`
     127  * `genericSubstitution()`
     130* does not inherit from `Type` to allow pointer inlining
     131* moved `Kind` before qualifiers in constructor to allow for default
     132* **TODO** move `kind`, `typeNames` into code generator
Note: See TracChangeset for help on using the changeset viewer.