OT/J code completion

On this page:
1. Completing a role's base class
2. Creating callout/callin method bindings
3. Completion templates

1. Completing a role's base class

If expanding the base type after the keyword playedBy, completion will also generate an "import base ..." declaration, if needed.

2. Creating callout/callin method bindings

Specific support for code completion exists to facilitate the creation of callout (OTJLD § 3) and callin (OTJLD § 4) method bindings.
Completion can be used for

2.1 Creating full method bindings (callout/callin)

Just activating the completion anywhere in the body of a role class allows you to create a full callout or callin binding to an existing base method (or field — "callout to field", see OTJLD § 3.5).
After pressing Ctrl-space, selection of the desired binding happens in three steps:
a) Select a base method
b) Change the role method name if desired.
c) Select the binding kind.

Two additional kinds of callouts can be generated, by typing "get" or "set" before invoking completion:
after typing get Create a callout to field getter.
after typing set Create a callout to field setter.

2.2 Completing partial callin/callout bindings

If a callin or callout binding has been typed up-to and including the "<-" or "->" token, completion can be used to expand the right hand side specifying the base method or field. For callin bindings you may optionally first type the callin modifier (before, replace or after). Otherwise you will be prompted for the desired callin modifier. In this case the proposed modifier is inferred to match the bound base method:
regular methodDefault is before (also after is legal).
callin methodDefault is replace

Normally, after "->" (as well as for "<-") completion will try to expand a base method, if for a callout one of the modifiers get or set has been typed, a field is searched instead.

2.3 Corrections after callin creation

After generating a callin binding using completion, the following two corrections might be especially helpful: Both corrections can easily be performed by a quickfix offered on the erroneous role method spec.

3. Completion templates

Content assist in the form of templates exists for a few specific ObjectTeams/Java language constructs like within (Expression).